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 相关文章推荐
ExtJS 2.2.1的grid控件在ie6中的显示问题
May 04 Javascript
js 如何实现对数据库的增删改查
Nov 23 Javascript
Javascript 遍历页面text控件详解
Jan 06 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
Mar 09 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
Feb 18 Javascript
AngularJs 60分钟入门基础教程
Apr 03 Javascript
jQuery滚动新闻实现代码
Jun 26 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
vue中监听返回键问题
Aug 28 Javascript
Webpack设置环境变量的一些误区详解
Dec 19 Javascript
使用 UniApp 实现小程序的微信登录功能
Jun 09 Javascript
vue实现倒计时功能
Mar 24 Vue.js
详解解决使用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程序员编程注意事项
2008/04/10 PHP
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
2010/01/22 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
Vue实现可移动水平时间轴
2020/06/29 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
横向对比分析Python解析XML的四种方式
2016/03/30 Python
windows下python连接oracle数据库
2017/06/07 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
一套VC试题
2015/01/23 面试题
2014年煤矿工人工作总结
2014/12/08 职场文书
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS