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实现的Div窗口震动特效
Jun 09 Javascript
判断字符串的长度(优化版)中文占两个字符
Oct 30 Javascript
浅谈Javascript如何实现匀速运动
Dec 19 Javascript
基于jQuery创建鼠标悬停效果的方法
Mar 07 Javascript
jQuery提示插件alertify使用指南
Apr 21 Javascript
JavaScript实现模仿桌面窗口的方法
Jul 18 Javascript
跟我学习javascript的最新标准ES6
Nov 20 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
详解AngularJS2 Http服务
Jun 26 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
Dec 25 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
Sep 15 Javascript
微信小程序 下拉刷新及上拉加载原理解析
Nov 06 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 array数组的教程详解
2013/06/05 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
2015/07/01 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
动态加载iframe
2006/06/16 Javascript
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
七年级历史教学反思
2014/02/05 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
自荐信格式模板
2015/03/27 职场文书
详解python网络进程
2021/06/15 Python
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技