引入sass
首先使用官方提供的腳手架vue-cli進行搭建框架,這里就不做說明了,查閱官網即可。
等安裝完所有依賴后,安裝sass的依賴包:
npm install --save-dev sass-loader //sass-loader依賴于node-sass npm install --save-dev node-sass
然后在build文件夾下的webpack.base.conf.js
的rules里面添加配置:
{ test: /\.sass$/, loaders: ['style', 'css', 'sass'] }
然后添加csslang屬性。注意,這里是scss,而且css文件的后綴也是scss:
<style lang="scss"></style>
最后需要重新編譯一下項目,否則沒有效果。
$ npm run dev
現在就可以隨意的使用sass了,這時候會發現如果我想定義幾個變量進行全局使用,好像只能在頁面中通過@import
來引入,這顯然不夠優雅,可以這樣解決。
配置sass全局變量
有一個babel插件可以完美的解決這個問題:sass-resources-loader
可以訪問sass資源任何一個需要訪問的sass模塊。所以,可以使用共享變量和混合所有SASS樣式,而不去每個文件都引用。
首先進行插件安裝:
npm install --save-dev sass-resources-loader
然后在 build 文件夾下找到 util.js
修改sass編譯器loader的配置,直接把下面的代碼復制進去即可:
// 全局文件引入 當然只想編譯一個文件的話可以省去這個函數 function resolveResource(name) { return path.resolve(__dirname, '../src/style/' + name); } function generateSassResourceLoader() { var loaders = [ cssLoader, 'sass-loader', { loader: 'sass-resources-loader', options: { // 多個文件時用數組的形式傳入,單個文件時可以直接使用 path.resolve(__dirname, '../static/style/common.scss' resources: [resolveResource('theme.scss')] } } ]; if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, fallback: 'vue-style-loader' }) } else { return ['vue-style-loader'].concat(loaders) } }
將默認的sass配置改為 generateSassResourceLoader()。
return { css: generateLoaders(), postcss: generateLoaders(), less: generateLoaders('less'), // vue-cli默認sass配置 // sass: generateLoaders('sass', { indentedSyntax: true }), // scss: generateLoaders('sass'), // 新引入的sass-resources-loader sass: generateSassResourceLoader(), scss: generateSassResourceLoader(), stylus: generateLoaders('stylus'), styl: generateLoaders('stylus') }
改完配置后重啟服務就可以在theme.scss
里定義全局變量并在頁面中引用了。
需要注意的是,scss里的變量是$
開頭,而less里的變量是@
開頭。比如我想定義一個項目的主色調變量,我可以在theme.scss
里這樣定義:
$c-primary: #fd7a00; $theme-blue: #3296fa; $theme-red: #da3838;
引用變量的時候直接引用變量名即可。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com