vue2中使用sass并配置全局的sass样式变量的方法


Posted in Javascript onSeptember 04, 2018

Sass语言

      Sass是一种强大的css扩展语言(css本身并不是一门语言),它允许你使用变量、嵌套规则、mixins、导入等css没有但开发语言(如Java、C#、Ruby等)有的一些特性,并且完全兼容CSS语法。Sass有助于保持大型样式表结构良好。

      Sass有两种语法。

      一种称为SCSS,是一个CSS3语法的扩充版本,也就是说,所有符合CSS3语法的样式表也都是具有相同语法意义的SCSS文件,SCSS样式表文件要以.scss扩展名结尾。在vue中,我们可以使用<style lang="scss"></style>来标志里面的内容是以SCSS语法来书写的。

      一种称为SASS,是Sass以前的语法,它和python一样,没有{}大括号来标志程序块,而是以缩进来标志嵌套层级;而且也不使用分号,而是用换行符来分隔属性。SASS样式表文件要以.sass扩展名结尾。在vue中,我们可以使用<style lang="sass"></style>来标志里面的内容是以SASS语法来书写的。

在vue中使用样式文件sass,如果每个.vue文件都引入该样式,build出来文件后,势必会造成样式的重复,冗余,如果在main.js中全局引入一个scss文件,在其中定义变量在其他组件或者页面中引用报变量未定义错误,其他的样式可以正常显示,显然是编译的问题。那么,全局设置并加载样式就显得很有必要了!

首先,npm安装好

"sass-loader": "^6.0.7",
 "sass-resources-loader": "^1.3.3",

在build/webpack.base.conf.js中,在module的rules里添加

{
    test: /\.scss$/,
    loaders: ["style", "css", "sass"]
   }

然后在build/utils.js文件中加入如下代码:

需要注意的是:我的全局样式是放在src/common/sass/index.scss中的

function resolveResouce(name) {
  return path.resolve(__dirname, '../src/common/sass/' + name);
 }
 function generateSassResourceLoader() {
  var loaders = [
   cssLoader,
   'postcss-loader',
   'sass-loader',
   {
    loader: 'sass-resources-loader',
    options: {
     //这是用到的sass文件,多个文件时用数组的形式传入,这是带有变量和mixin的scss文件
     resources: [resolveResouce('variable.scss'), resolveResouce('mixin.scss')] 注意这是我全局样式的位置,个人不同,需做调整
    }
   }
  ];
  if (options.extract) {
   return ExtractTextPlugin.extract({
    use: loaders,
    fallback: 'vue-style-loader'
   })
  } else {
   return ['vue-style-loader'].concat(loaders)
  }
 }

最后,将该页面下方的return部分,改成如下模样

return {
  css: generateLoaders(),
  postcss: generateLoaders(),
  less: generateLoaders('less'),
  //sass: generateLoaders('sass', { indentedSyntax: true }),
  //scss: generateLoaders('sass'),
  sass: generateSassResourceLoader(),
  scss: generateLoaders('sass')
   .concat(
    {
     loader: 'sass-resources-loader',
     options: {
      resources: path.resolve(__dirname, '../src/common/sass/index.scss') //注意这是我全局样式的位置,个人不同,需做调整
     }
    }
   ),
  stylus: generateLoaders('stylus'),
  styl: generateLoaders('stylus')
 }

总结

以上所述是小编给大家介绍的vue2中使用sass并配置全局的sass样式变量,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQueryEasyUI datagrid框架的进阶使用
Apr 08 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
Sep 18 Javascript
鼠标拖拽移动子窗体的JS实现
Feb 25 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
Mar 25 Javascript
Node.js DES加密的简单实现
Jul 07 Javascript
AngularJS基础 ng-value 指令简单示例
Aug 03 Javascript
详谈js遍历集合(Array,Map,Set)
Apr 06 Javascript
微信小程序自定义导航隐藏和显示功能
Jun 13 Javascript
JS使用正则表达式验证身份证号码
Jun 23 Javascript
基于daterangepicker日历插件使用参数注意的问题
Aug 10 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
Sep 04 Javascript
html5中sharedWorker实现多页面通信的示例代码
May 07 Javascript
Element UI 自定义正则表达式验证方法
Sep 04 #Javascript
在vue项目中引入高德地图及其UI组件的方法
Sep 04 #Javascript
使用validate.js实现表单数据提交前的验证方法
Sep 04 #Javascript
快速解决vue-cli在ie9+中无效的问题
Sep 04 #Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 #Javascript
create-react-app安装出错问题解决方法
Sep 04 #Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
Sep 04 #Javascript
You might like
让你的网站首页自动选择语言转跳
2006/12/06 PHP
Discuz 模板引擎的封装类代码
2008/07/18 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
初识Laravel
2014/10/30 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
Javascript中的变量使用说明
2010/05/18 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
初步解析Python中的yield函数的用法
2015/04/03 Python
python 队列详解及实例代码
2016/10/18 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
药学专业毕业生求职信
2013/10/20 职场文书
学校采购员岗位职责
2014/01/02 职场文书
公司承诺书怎么写
2014/05/24 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
政工师工作总结2015
2015/05/26 职场文书
家长意见书
2015/06/04 职场文书
学前教育见习总结
2015/06/23 职场文书
公司车队管理制度
2015/08/04 职场文书