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中的isNaN函数使用说明
Nov 10 Javascript
javascript中的缓动效果实现程序
Dec 29 Javascript
jquery解决图片路径不存在执行替换路径
Feb 06 Javascript
简单的Jquery全选功能
Nov 07 Javascript
js数组常见操作及数组与字符串相互转化实例详解
Nov 10 Javascript
AngularJS ng-blur 指令详解及简单实例
Jul 30 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
Oct 04 Javascript
微信小程序数字滚动插件使用详解
Feb 02 Javascript
angularjs手动识别字符串中的换行符方法
Oct 02 Javascript
Bootstrap实现模态框效果
Sep 30 Javascript
vue组件 keep-alive 和 transition 使用详解
Oct 11 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 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访问查询mysql数据的三种方法
2006/10/09 PHP
preg_match_all使用心得分享
2014/01/31 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
javascript 一些用法小结
2009/09/11 Javascript
关于js类的定义
2011/06/28 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
2018/09/03 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
flask 实现token机制的示例代码
2019/11/07 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
opencv+python实现均值滤波
2020/02/19 Python
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
2014年教师培训的自我评价
2014/01/03 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
公司老总年会致辞
2015/07/30 职场文书
Python基础知识之变量的详解
2021/04/14 Python
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android