Vue引入sass并配置全局變量

Vue引入sass并配置全局變量

引入sass

首先使用官方提供的腳手架vue-cli進(jìn)行搭建框架,這里就不做說明了,查閱官網(wǎng)即可。

等安裝完所有依賴后,安裝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>

最后需要重新編譯一下項(xiàng)目,否則沒有效果。

$ npm run dev

現(xiàn)在就可以隨意的使用sass了,這時候會發(fā)現(xiàn)如果我想定義幾個變量進(jìn)行全局使用,好像只能在頁面中通過@import來引入,這顯然不夠優(yōu)雅,可以這樣解決。

配置sass全局變量

有一個babel插件可以完美的解決這個問題:sass-resources-loader可以訪問sass資源任何一個需要訪問的sass模塊。所以,可以使用共享變量和混合所有SASS樣式,而不去每個文件都引用。

首先進(jìn)行插件安裝:

npm install --save-dev sass-resources-loader

然后在 build 文件夾下找到 util.js 修改sass編譯器loader的配置,直接把下面的代碼復(fù)制進(jìn)去即可:

// 全局文件引入 當(dāng)然只想編譯一個文件的話可以省去這個函數(shù)
function resolveResource(name) {
  return path.resolve(__dirname, '../src/style/' + name);
}
function generateSassResourceLoader() {
  var loaders = [
    cssLoader,
    'sass-loader',
    {
      loader: 'sass-resources-loader',
      options: {
        // 多個文件時用數(shù)組的形式傳入,單個文件時可以直接使用 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)
    }
  }

將默認(rèn)的sass配置改為 generateSassResourceLoader()。

return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    less: generateLoaders('less'),
    // vue-cli默認(rèn)sass配置
    // sass: generateLoaders('sass', { indentedSyntax: true }), 
    // scss: generateLoaders('sass'),
    // 新引入的sass-resources-loader
    sass: generateSassResourceLoader(),
    scss: generateSassResourceLoader(),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }

改完配置后重啟服務(wù)就可以在theme.scss里定義全局變量并在頁面中引用了。

需要注意的是,scss里的變量是$開頭,而less里的變量是@開頭。比如我想定義一個項(xiàng)目的主色調(diào)變量,我可以在theme.scss里這樣定義:

$c-primary: #fd7a00;
$theme-blue: #3296fa;
$theme-red: #da3838;

引用變量的時候直接引用變量名即可。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 webpack介紹和使用 一、webpack介紹 1、由來 ...
    it筱竹閱讀 11,440評論 0 21
  • 1 Webpack 1.1 概念簡介 1.1.1 WebPack是什么 1、一個打包工具 2、一個模塊加載工具 3...
    Kevin_Junbaozi閱讀 7,005評論 0 16
  • 一、webpack的基本概念 webpack 本質(zhì)上是一個打包工具,它會根據(jù)代碼的內(nèi)容解析模塊依賴,幫助我們把多個...
    cilla123閱讀 1,712評論 0 8
  • 在現(xiàn)在的前端開發(fā)中,前后端分離、模塊化開發(fā)、版本控制、文件合并與壓縮、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,653評論 1 32
  • 我的語文書里有一首詩叫《憫農(nóng)》,這首詩原文是:鋤禾日當(dāng)午,汗滴禾下土,誰知盤中餐,粒粒皆辛苦。這首詩的意...
    張軒赫閱讀 197評論 0 3

友情鏈接更多精彩內(nèi)容