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 相关文章推荐
转一个日期输入控件,支持FF
Apr 27 Javascript
javascript  Error 对象 错误处理
May 18 Javascript
jquery+json 通用三级联动下拉列表
Apr 19 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
Sep 06 Javascript
JavaScript如何动态创建table表格
Aug 02 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
Nov 18 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
Mar 25 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
Nov 21 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
Mar 11 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
Mar 29 Javascript
JavaScript实现图片切换效果
Aug 12 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
May 04 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
提升PHP执行速度全攻略
2006/10/09 PHP
加速XP搜索功能堪比vista
2007/03/22 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
js实现缓动动画
2020/11/25 Javascript
python中的yield使用方法
2014/02/11 Python
Python实现简单的可逆加密程序实例
2015/03/05 Python
20招让你的Python飞起来!
2016/09/27 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
深入了解Django中间件及其方法
2019/07/26 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
校园十大歌手策划书
2014/02/01 职场文书
全国道德模范事迹
2014/02/01 职场文书
校庆活动方案
2014/03/31 职场文书
交通事故调解协议书
2014/04/16 职场文书
应届生找工作求职信
2014/06/24 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
会计简历自我评价
2015/03/10 职场文书
八年级物理教学反思
2016/02/19 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL