vue如何引入sass全局变量

网友投稿 546 2023-01-27


vue如何引入sass全局变量

sass或者less都提供变量设置,在需求切换主题的项目中使用less或者sass变量,只要修改变量值,编译后所有用到该变量的样式都会被修改为你想要的效果,但是在vue-cli搭建的项目中,在main.js中全局引入一个scss文件,在其中定义变量在其他组件或者页面中引用报变量未定义错误,其他的样式可以正常显示,显然是编译的问题。

傻瓜式引用

在每个用到全局变量的组件都引入该全局样式文件

@import 'path/fileName.scss'

但是组件或者页面不在统一层目录下,引入的路径可能也会有差异,所以还是看看 sass-resources-loader 的解决方法吧。

sass-resources-loaderhttp://引入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 文件,重启服务,其中定义的变量在其他组件就可以使用了。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:共享文件系统怎么设置(怎样把文件设置成共享文件)
下一篇:vue中v
相关文章

 发表评论

暂时没有评论,来抢沙发吧~