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动态添加表格数据行(ASP后台数据库保存例子)
May 08 Javascript
JavaScript编写连连看小游戏
Jul 07 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
May 21 Javascript
JQuery控制图片由中心点逐渐放大效果
Jun 26 Javascript
js原生跨域_用script标签的简单实现
Sep 24 Javascript
深入理解Node.js中的进程管理
Mar 13 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 Javascript
vue中组件的过渡动画及实现代码
Nov 21 Javascript
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 Javascript
vue中echarts引入中国地图的案例
Jul 28 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接收POST数据,解析json数据
2013/06/28 PHP
php实现监听事件
2013/11/06 PHP
php的一个简单加密解密代码
2014/01/14 PHP
php控制文件下载速度的方法
2015/03/24 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
js数组的操作指南
2014/12/28 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
canvas绘制多边形
2017/02/24 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
python障碍式期权定价公式
2019/07/19 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
大学生作弊检讨书
2014/02/19 职场文书
《狼》教学反思
2014/03/02 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书