Update2019/3/6:发现一个更好的方法,预处理器加载一个全局设置文件

官方github给出了详细的配置。


在 SCSS 中使用变量很方便,创建一个 variables.scss 文件,里面声明各种变量,如果你需要使用这些变量,就使用@import variables.scss导入这个文件即可。但这样会存在两个小问题:

  • 每次使用都要导入,不优雅
  • JavaScript 文件无法使用这些变量

有没有两全其美并足够简单的方法呢?(:废话

假设有这样一个保存 scss 变量的文件,style/scss/variables.js:

  1. module.exports = {
  2. 'red-color': 'red',
  3. 'px': `${1/20}rem`
  4. }

仅需要在 webpack.config.js 中更改下配置:

  1. let styleVariables = require('/style/scss/variables')
  2. // 其他配置
  3. ...
  4. {
  5. test: /\.scss$/,
  6. use: [
  7. 'css-loader',
  8. 'postcss-loader',
  9. {
  10. loader: 'sass-loader',
  11. options: {
  12. data: Object.keys(styleVariables)
  13. .map(k => `\$${k}: ${styleVariables[k]};`)
  14. .join('\n')
  15. }
  16. }
  17. ]
  18. },

那么在任意 scss 中,都可以直接使用我们在 JavaScript 文件中声明的变量,而无需额外引入:

// page-a.scss

  1. .page-a {
  2. height: 20*$px;
  3. color: $red-color;
  4. }

如何在 SCSS 使用 JavaScript 变量/scss全局变量的更多相关文章

  1. javascript变量作用域 — 全局变量

    javascript中,如果没有用var 声明一个变量,则该变量会被自动创建在全局作用域中,即使你是在某个函数中创建的,它也会成为全局变量,从而可以被另一个函数调用.

  2. 如何在VUE项目中使用SCSS

    首先要了解什么是CSS 预处理器? SCSS是一种CSS预处理语言 定义了一种新的专门的编程语言,编译后形成正常的css文件,为css增加一些编程特性,无需考虑浏览器的兼容性(完全兼容css3),让c ...

  3. css变量复用 全局变量-局部变量

    前言 简单使用场景:同一套后台系统有多套主题的情况下,主题色作为一个最常用到的可复用的颜色,非常有必要像js的全局变量一样存在全局变量中以作复用,之前我第一个想到的是sass的变量声明,未曾想到css ...

  4. javascript变量的作用域

    javascript变量的作用域 基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象  讲一个值赋值给变量时,javascript解析器首先要确定是基本类型 ...

  5. JavaScript 变量声明提前

    <JavaScript权威指南>中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声 ...

  6. JavaScript 变量

    一,JavaScript 变量(存储信息的容器) 与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比如 z=x+y). 变量可以使用短名称(比如 x 和 y),也可以使用描 ...

  7. javascript变量声明 及作用域

    javascript变量声明提升(hoisting) http://openwares.net/js/javascript_declaration_hoisting.html 可能要FQ一下 java ...

  8. JavaScript局部变量和全局变量的理解

    原文链接:http://www.cnblogs.com/eric-qin/p/4166552.html JavaScript局部变量和全局变量的理解   1 2 3 4 5 6 7 8 9 10 &l ...

  9. JavaScript 变量作用域

    一. 变量声明 变量用var关键字来声明,如下所示: 变量在未声明的情况下被初始化,会被添加到全局环境. JavaScript执行代码时,会创建一个上下文执行环境,全局环境是最外围的环境.每个函数在被 ...

随机推荐

  1. python中的新式类与旧式类

    在python2中,有新式类与旧式类的区别: 首先创建一个类: class Sb(object): pass 如果创建时继承自object,说明这是一个新式类,不写object,说明是一个旧式类: 那 ...

  2. Ubuntu16下用virtualbox 安装Windows虚拟机

    平时要用Windows系统,但是现在工作都是在Linux下面开发,所以都没装Windows,之前用vm虚拟机比较麻烦, 所以就用virtualbox搞搞: 1.sed -i '$adeb http:/ ...

  3. python入门 -- 学习笔记1

    学习资料:笨方法学Python 准备: 安装环境----请自行网络搜索(Windows安装很简单,和其他安装程序一样) 找一个自己习惯的编辑器(比如:sublime text 3) 创建一个专门的目录 ...

  4. OKHttp使用详解

    一,OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络. 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和Leak ...

  5. Python学习—基础篇之文件操作

    文件操作 文件操作也是编程中需要熟练掌握的技能,尤其是在后台接口编写和数据分析过程中,对各种类型的文件进行操作,获取文件信息或者对信息进行存储是十分重要的.本篇博客中将主要对常见的文本格式文件和Exc ...

  6. Python的基本用法

    ---恢复内容开始--- 一.函数 1.1 默认参数 想要计算一个数x的n次方,可以定义如下的函数.但是有时候我们仅仅只需要计算x^2,所以只想使用一个参数即power(x),这时如果仍用如下代码会报 ...

  7. HDU6030 Happy Necklace(递推+矩阵快速幂)

    传送门:点我 Little Q wants to buy a necklace for his girlfriend. Necklaces are single strings composed of ...

  8. PHP安装linux

    PHP 7.1.26 安装 1. 下载安装包 例php-7.1.26.tar.gz 下载地址:http://cn2.php.net/downloads.php 2. 放入/root 3. 切换目录 # ...

  9. IBGP规划

    在IBGP邻居中,使用反射器减少IBGP邻居关系是一种最常用的网络结构,在上图中AS65001中有6台路由器,其中,R1和R2是一组反射器,配置如下: R1: ! interface Loopback ...

  10. PHP+ajax实现二级联动

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...