vue如何引入sass全局變量
sass或者less都提供變量設(shè)置,在需求切換主題的項目中使用less或者sass變量,只要修改變量值,編譯后所有用到該變量的樣式都會被修改為你想要的效果,但是在vue-cli搭建的項目中,在main.js中全局引入一個scss文件,在其中定義變量在其他組件或者頁面中引用報變量未定義錯誤,其他的樣式可以正常顯示,顯然是編譯的問題。
傻瓜式引用
在每個用到全局變量的組件都引入該全局樣式文件
@import 'path/fileName.scss'
但是組件或者頁面不在統(tǒng)一層目錄下,引入的路徑可能也會有差異,所以還是看看 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的配置
// 全局文件引入 當(dāng)然只想編譯一個文件的話可以省去這個函數(shù)
function resolveResource(name) {
return path.resolve(__dirname, '../static/style/' + name);
}
function generateSassResourceLoader() {
var loaders = [
cssLoader,
'sass-loader',
{
loader: 'sass-resources-loader',
options: {
// 多個文件時用數(shù)組的形式傳入,單個文件時可以直接使用 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配置的調(diào)用為 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')
}
在 main.js 中引用 common.scss 文件,重啟服務(wù),其中定義的變量在其他組件就可以使用了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue3中reactive和ref的實現(xiàn)與區(qū)別詳解
reactive和ref都是vue3實現(xiàn)響應(yīng)式系統(tǒng)的api,他們是如何實現(xiàn)響應(yīng)式的呢,reactive和ref又有什么區(qū)別呢,下面小編就來和大家詳細講講,希望對大家有所幫助2023-10-10
vue中動態(tài)設(shè)置meta標(biāo)簽和title標(biāo)簽的方法
這篇文章主要介紹了vue中動態(tài)設(shè)置meta標(biāo)簽和title標(biāo)簽的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07

