Vue引入sass并配置全局变量的方法


Posted in Javascript onJune 27, 2018

引入sass

首先使用官方提供的脚手架vue-cli进行搭建框架,这里就不做说明了,查阅官网即可。

等安装完所有依赖后,安装sass的依赖包:

npm install --save-dev sass-loader
//sass-loader依赖于node-sass
npm install --save-dev node-sass

然后在build文件夹下的webpack.base.conf.js的rules里面添加配置:

{
 test: /\.sass$/,
 loaders: ['style', 'css', 'sass']
}

然后添加csslang属性。注意,这里是scss,而且css文件的后缀也是scss:

<style lang="scss"></style>

最后需要重新编译一下项目,否则没有效果。

$ npm run dev

现在就可以随意的使用sass了,这时候会发现如果我想定义几个变量进行全局使用,好像只能在页面中通过@import来引入,这显然不够优雅,可以这样解决。

配置sass全局变量

有一个babel插件可以完美的解决这个问题:sass-resources-loader可以访问sass资源任何一个需要访问的sass模块。所以,可以使用共享变量和混合所有SASS样式,而不去每个文件都引用。

首先进行插件安装:

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

然后在 build 文件夹下找到 util.js 修改sass编译器loader的配置,直接把下面的代码复制进去即可:

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

改完配置后重启服务就可以在theme.scss里定义全局变量并在页面中引用了。

需要注意的是,scss里的变量是$开头,而less里的变量是@开头。比如我想定义一个项目的主色调变量,我可以在theme.scss里这样定义:

$c-primary: #fd7a00;
$theme-blue: #3296fa;
$theme-red: #da3838;

引用变量的时候直接引用变量名即可。

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

Javascript 相关文章推荐
JavaScript 中的replace方法说明
Apr 13 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
Jun 14 Javascript
深入理解javascript学习笔记(一) 编写高质量代码
Aug 09 Javascript
jquery异步跨域访问代码
Jun 28 Javascript
jquery定时滑出可最小化的底部提示层特效代码
Oct 02 Javascript
ie8本地图片上传预览示例代码
Jan 12 Javascript
js数组如何添加json数据及js数组与json的区别
Oct 27 Javascript
Node.js + Redis Sorted Set实现任务队列
Sep 19 Javascript
jQuery异步提交表单实例
May 30 jQuery
用react-redux实现react组件之间数据共享的方法
Jun 08 Javascript
详细介绍解决vue和jsp结合的方法
Feb 06 Javascript
vuex实现购物车功能
Jun 28 Javascript
详解解决使用axios发送json后台接收不到的问题
Jun 27 #Javascript
vue中v-model的应用及使用详解
Jun 27 #Javascript
JS基于封装函数实现的表格分页完整示例
Jun 26 #Javascript
Vue实现todolist删除功能
Jun 26 #Javascript
AngularJS实现动态切换样式的方法分析
Jun 26 #Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
Jun 26 #Javascript
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 #jQuery
You might like
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
PHP多文件上传类实例
2015/03/07 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
python执行系统命令后获取返回值的几种方式集合
2018/05/12 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
python中tab键是什么意思
2020/06/18 Python
Django Model层F,Q对象和聚合函数原理解析
2020/11/12 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
医药营销专业个人自荐信
2013/09/29 职场文书
大学生自我鉴定
2013/12/16 职场文书
早餐连锁店计划书
2014/01/08 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
人事代理委托书
2014/09/27 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
2015年大学生工作总结
2015/04/21 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL