vue如何引入sass全局变量


Posted in Javascript onJune 28, 2018

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中使用replace结合正则实现replaceAll的效果
Jun 04 Javascript
js获取多个tagname的节点数组
Sep 22 Javascript
js switch case default 的用法示例介绍
Oct 23 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
Sep 09 Javascript
基于jquery步骤进度条源码分享
Nov 12 Javascript
JavaScript 数组的深度复制解析
Nov 02 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
Feb 20 Javascript
微信小程序 实例开发总结
Apr 26 Javascript
vue.js组件之间传递数据的方法
Jul 10 Javascript
vue prop传值类型检验方式
Jul 30 Javascript
js实现类选择器和name属性选择器的示例步骤
Feb 07 Javascript
vue实现滑动解锁功能
Mar 03 Vue.js
小程序实现带年月选取效果的日历
Jun 27 #Javascript
浅谈Angular6的服务和依赖注入
Jun 27 #Javascript
JS实现获取进今年第几天是周几的方法分析
Jun 27 #Javascript
vue+springmvc导出excel数据的实现代码
Jun 27 #Javascript
微信小程序中使用ECharts 异步加载数据的方法
Jun 27 #Javascript
浅谈Webpack下多环境配置的思路
Jun 27 #Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
Jun 27 #Javascript
You might like
PHP中的CMS的涵义
2007/03/11 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
Python异常学习笔记
2015/02/03 Python
Python之父谈Python的未来形式
2016/07/01 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
python实现内存监控系统
2021/03/07 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
python中的列表和元组区别分析
2020/12/30 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
指针和引用有什么区别
2013/01/13 面试题
英语商务邀请函范文
2014/01/16 职场文书
2014年群众路线党员自我评议
2014/09/24 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书