首頁  >  文章  >  web前端  >  關於vue如何引入sass全域變數的解析

關於vue如何引入sass全域變數的解析

不言
不言原創
2018-06-29 11:36:051626瀏覽

這篇文章主要介紹了關於vue如何引入sass全局變數的解析,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

sass或less都提供變數設置,在需求切換主題的專案中使用less或sass變量,這篇文章主要介紹了vue引入sass全局變量,具有一定的參考價值,有興趣的小伙伴們可以參考一下

sass或less都提供變數設置,在需求切換主題的項目中使用less或sass變量,只要修改變數值,編譯後所有用到該變數的樣式都會被修改為你想要的效果,但是在vue-cli搭建的項目中,在main.js中全域引入一個scss文件,在其中定義變數在其他元件或頁面中引用報變數未定義錯誤,其他的樣式可以正常顯示,顯然是編譯的問題。

傻瓜式引用

在每個用到全域變數的元件都會引入該全域樣式檔

@import 'path/fileName.scss'

但是元件或頁面不在統一層目錄下,所引入的路徑可能也會有差異,所以還是看看sass-resources-loader 的解決方法吧。

sass-resources-loader引入sass全域變數

sass-resources-loader可以存取sass資源任何一個需要存取的sass模組。所以,可以使用共享變數和混合所有SASS樣式,而不去每個檔案都引用。

安裝sass-resources-loader

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

修改sass設定

build 資料夾下找到 util.js 修改sass編譯器loader的設定

// 全局文件引入 当然只想编译一个文件的话可以省去这个函数
function resolveResource(name) {
 return path.resolve(__dirname, '../static/style/' + name);
}
function generateSassResourceLoader() {
 var loaders = [
  cssLoader,
  'sass-loader',
  {
   loader: 'sass-resources-loader',
   options: {
    // 多个文件时用数组的形式传入,单个文件时可以直接使用 path.resolve(__dirname, '../static/style/common.scss'
    resources: [resolveResource('common.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')
 }

main.js 中引用 common.scss 文件,重啟服務,其中定義的變數在其他元件就可以使用了。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

關於vue使用Element元件時v-for迴圈裡的表單項目驗證的方法

## Vue webapp專案透過HBulider打包原生APP的介紹

#

以上是關於vue如何引入sass全域變數的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn