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
npminstall--save-devsass-resources-loader
修改sass配置
在build文件夹下找到util.js修改sass编译器loader的配置
//全局文件引入当然只想编译一个文件的话可以省去这个函数
functionresolveResource(name){
returnpath.resolve(__dirname,'../static/style/'+name);
}
functiongenerateSassResourceLoader(){
varloaders=[
cssLoader,
'sass-loader',
{
loader:'sass-resources-loader',
options:{
//多个文件时用数组的形式传入,单个文件时可以直接使用path.resolve(__dirname,'../static/style/common.scss'
resources:[resolveResource('common.scss')]
}
}
];
if(options.extract){
returnExtractTextPlugin.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文件,重启服务,其中定义的变量在其他组件就可以使用了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。