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 相关文章推荐
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 Javascript
jquery获取iframe中的dom对象(两种方法)
Jul 02 Javascript
JS调用CS里的带参方法实例
Aug 01 Javascript
jquery对象访问是什么及使用方法介绍
May 03 Javascript
jQuery ajax的功能实现方法详解
Jan 06 Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 jQuery
微信小程序使用npm包的方法步骤
Aug 13 Javascript
vuex实现数据状态持久化
Nov 11 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
vue-simple-uploader上传成功之后的response获取代码
Sep 07 Javascript
微前端qiankun改造日渐庞大的项目教程
Jun 21 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 socket客户端及服务器端应用实例
2014/07/04 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
2010/01/22 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
Python函数参数操作详解
2018/08/03 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
学习python的前途 python挣钱
2019/02/27 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
2014年3.15团委活动总结
2014/03/16 职场文书
校企合作协议书
2014/04/16 职场文书
个人培训总结
2015/03/05 职场文书
Python图片检索之以图搜图
2021/05/31 Python
python 实现图片特效处理
2022/04/03 Python
canvas 中如何实现物体的框选
2022/08/05 Javascript