scss、sass 全局变量

###使用场景 因为产品风格的统一性,需要抽象需要抽象一些css变量与方法,如下文件。

// common.scss
$defaultSize: 12px !default;
@function rem($px){
  @return $px / $defaultSize * 1rem;
}

$primary-color: #3b94f3;
$info-color: #70b4f9;
$success-color: #1ed278;
$warn-color: #ffa100;
$danger-color: #ed6114;
复制代码

##解决方式

每个scss文件引入common.scss(不推荐)

过于繁琐,维护性较差,如果是vue组件则每个组件都需要引入

在使用webpack打包时自动将common.scss打包到每个文件

需要安装sass-resources-loader,改插件抽闲scss(sass)代码到每个目标文件中

sass-resources-loader使用如下:

// webpack.default.js
rules: [
  {
      test: /\.scss$/,
      use:  ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader', {
            loader: 'sass-resources-loader',
            options: {resources: path.resolve(__dirname, '../static/src/style/common.scss')}
          }]
    }
]
复制代码

由于vue使用vue-loader来解析组件中的样式所以需要单独配置

<style lang="scss" scoped="true">

</style>
复制代码

以上代码vue-loader解析

sass-resources-loader使用如下:

// webpack.default.js
rules: [
  {
      test: /\.vue$/,
      loader: 'vue-loader',
      options: {
        loaders: {
          scss: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader', {
            loader: 'sass-resources-loader',
            options: {resources: path.resolve(__dirname, '../static/src/style/common.scss')}
          }]
        }
      }
  }
]
复制代码

配置完毕后每一个vue组件在webpack编译时都会自动导入配置的目标文件代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值