vue項目中使用scss

一 概述

隨着sass/less等css預處理器的出現,編寫css變的愈來愈有樂趣。因此如今愈來愈多的人在項目中喜歡使用scss或者less。(我本身就是一個)。因爲最近在寫一個vue項目。因此就把寫項目期間天天的一些知識點寫在博客裏。因此最近的博客應該都會和vue有關。今天要和你們分享的就是如何在vue項目中引入scss(引入less也相似)css

二 vue中引入scss

2.1 vue-loader

在講如何在vue項目中使用scss以前,咱們先來簡單瞭解一個概念,那就是vue-loader。vue-loader是什麼東西呢?vue-loader其實就是一個webpack的loader。用來把vue組件轉換成可部署的js,html,css模塊。因此咱們若是要想再vue項目中使用scss,確定要告訴vue-loader怎麼樣解析個人scss文件。
不瞭解webpack的同窗能夠先去自行百度。我這裏就放一張圖,看完你們能夠也就能知道webpack能作些什麼事情了。
webpack做用html

2.2 loader配置

在webpack中,全部預處理器都要匹配相應的loader,vue-loader容許其餘的webpack-loader處理組件中的一部分嗎,而後它根據lang屬性自動判斷出要使用的loaders。因此,其實只要安裝處理sass/scss的loader。就能在vue中使用scss了。
如今咱們來安裝sass/scss loadervue

npm install sass-loader node-sass --save-dev

2.3 爲何無需配置

咱們前面說到,vue-loader容許能根據lang屬性自動判斷出要使用的loaders。它是怎麼樣作到的?有這麼神奇嘛?咱們下面來看一看最核心部分的源代碼node

exports.cssLoaders = function (options) {
  options = options || {}

  var cssLoader = {
    loader: 'css-loader',
    options: {
      minimize: process.env.NODE_ENV === 'production',
      sourceMap: options.sourceMap
    }
  }

  // generate loader string to be used with extract text plugin
  function generateLoaders (loader, loaderOptions) {
    var loaders = [cssLoader]
    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
    }

    // Extract CSS when that option is specified
    // (which is the case during production build)
    if (options.extract) {
      return ExtractTextPlugin.extract({
        use: loaders,
        fallback: 'vue-style-loader'
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
    }
  }

  // https://vue-loader.vuejs.org/en/configurations/extract-css.html
  return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    less: generateLoaders('less'),
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass'),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }
}

就是上述這段代碼讓vue-loader有了這種能力,它會根據不一樣的文件去使用不一樣的loaderwebpack

2.4 使用scss

這樣你就能夠愉快的使用scss了。web

<style scoped lang="sass">
      xxxx
      xxxx
</style>
相關文章
相關標籤/搜索