vue使用hotcss.scss,并且全局引入scss

2019-01-21  本文已影响0人  阳光之城alt

要如何在我们的vue项目中全局引入scss文件呢?

image.png
import Vue from 'vue'
import App from './App'
import router from './router'
import './common/x1.scss'

main.js可以直接import css文件,也可以直接import scss文件。
在index.html中link引入的话,不起作用。
公共样式可以写在app.vue这个父组件的style标签中,这样我们写的子组件就能继承这些公共样式,但是!!!我们自定义的scss的变量继承不了!!

在引入适配hotcss.css的时候 需要适配css和js放在最前面 否则会失效

image.png

如果我们想使用公共的scss样式变量(比如app的主题颜色),我们就只能是每写一个.vue文件都要在style标签里面@import “global.scss”这个公共scss样式文件,但是这样做,会很麻烦。
(上述情况,less同sass一样,存在这些问题,但是less没有以下解决办法,sass有。)

但也有办法解决,步骤如下:

1.安装node-sass、sass-loader、style-loader

cnpm install node-sass --save-dev
cnpm install sass-loader --save-dev
cnpm install style-loader --save-dev   

2.安装sass-resources-loader

cnpm install sass-resources-loader --save-dev

3.修改build中的utils.js ==>exports.cssLoaders里面修改(这一步看仔细了 我修改的时候 出错了)

    scss: generateLoaders('sass').concat( ==> (这里修改)
      {
        loader: 'sass-resources-loader',
        options: {
          resources: path.resolve(__dirname,'../src/assets/style/main.scss'),
        }
      }
    )

最后在vue组件中的style标签中添加lang="scss",就ok了。这样我们就实现了全局引入scss。

参考文章
https://www.jianshu.com/p/78efb07949f5

上一篇下一篇

猜你喜欢

热点阅读