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 eval函数深入认识
Feb 21 Javascript
window.open关于浏览器拦截问题分析及解决方法
Feb 05 Javascript
关于js数组去重的问题小结
Jan 24 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 Javascript
node.js操作mysql(增删改查)
Jul 24 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
Aug 07 Javascript
Eclipse引入jquery报错如何解决
Dec 01 Javascript
JavaScript之DOM_动力节点Java学院整理
Jul 03 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
Dec 03 Javascript
Vue.js实现tab切换效果
Jul 24 Javascript
layui原生表单验证的实例
Sep 09 Javascript
Json实现传值到后台代码实例
Jun 30 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
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
php析构函数的简单使用说明
2015/08/24 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
空指针到底是什么
2012/08/07 面试题
建筑设计学生的自我评价
2014/01/16 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
母校寄语大全
2014/04/10 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python
python manim实现排序算法动画示例
2022/08/14 Python
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技