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 面向对象的之私有成员和公开成员
May 04 Javascript
SinaEditor使用方法详解
Dec 28 Javascript
JQuery右键菜单插件ContextMenu使用指南
Dec 19 Javascript
详解JavaScript中的blink()方法的使用
Jun 08 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
Dec 08 Javascript
微信小程序 wx.request方法的异步封装实例详解
May 18 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
May 25 jQuery
VUE中的无限循环代码解析
Sep 22 Javascript
总结js函数相关知识点
Feb 27 Javascript
js中数组对象去重的两种方法
Jan 18 Javascript
微信小程序 高德地图路线规划实现过程详解
Aug 05 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
Nov 05 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中cookies使用指南
2007/03/16 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
vue中component组件的props使用详解
2017/09/04 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
python实现sublime3的less编译插件示例
2014/04/27 Python
Python的语言类型(详解)
2017/06/24 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
应届生.NET方向面试题
2015/05/23 面试题
HSRP的含义以及如何工作
2014/09/10 面试题
餐饮主管岗位职责
2013/12/10 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
义诊活动通知
2015/04/24 职场文书
老人与海读书笔记
2015/06/26 职场文书
2016猴年春节问候语
2015/11/11 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
python scrapy简单模拟登录的代码分析
2021/07/21 Python
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP