鍍金池/ 問答/HTML/ vue 里按需加載樣式文件的問題

vue 里按需加載樣式文件的問題

最近一直在考慮怎么優(yōu)化自己的vue項目的問題 看到頁面上同時加載了好多樣式文件 想著怎么實現(xiàn)按需加載 并且避免樣式錯亂
之前給每個組件添加了scoped屬性 以為這樣可以解決樣式錯誤問題 但是還是不行 網(wǎng)上查了一下 好像還需要用到extract-text-webpack-plugin這個插件 但是我是用vue-cli構(gòu)建的項目 有這個插件呢 為什么還是會出現(xiàn)樣式錯亂 并且樣式文件也不是按需加載的 我用的是less 這是為什么 是需要改下webpack配置文件嗎
圖片描述

var path = require('path')
var fs = require('fs')
var utils = require('./utils')
var config = require('../config')
var vueLoaderConfig = require('./vue-loader.conf')

function resolve(dir) {
return path.join(__dirname, '..', dir)
}

module.exports = {
entry: {

app: './src/main.js'

},
output: {

path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production' ?
  config.build.assetsPublicPath :
  config.dev.assetsPublicPath

},
resolve: {

extensions: ['.js', '.vue', '.json'],
alias: {
  'vue$': 'vue/dist/vue.esm.js',
  '@': resolve('src'),
  'components': path.resolve(__dirname,'../src/components'),
  'assets': path.resolve(__dirname,'../src/assets'),
  'js': path.resolve(__dirname,'../src/js'),
  'api': path.resolve(__dirname, '../src/api'),
  'service': path.resolve(__dirname, '../src/service'),
  'tools': path.resolve(__dirname, '../src/tools')
},
symlinks: false

},
module: {

rules: [{
    test: /\.vue$/,
    loader: 'vue-loader',
    options: vueLoaderConfig
  },
  {
    test: /\.js$/,
    loader: 'babel-loader',
    include: [resolve('src'), resolve('test'),resolve('node_modules/vue-confirm')]
  },
  {
    test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
    loader: 'url-loader',
    options: {
      limit: 10000,
      name: utils.assetsPath('img/[name].[hash:7].[ext]')
    }
  },
  {
    test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
    loader: 'url-loader',
    options: {
      limit: 10000,
      name: utils.assetsPath('media/[name].[hash:7].[ext]')
    }
  },
  {
    test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
    loader: 'url-loader',
    options: {
      limit: 10000,
      name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
    }
  },
  {
    test: /iview.src.*?js$/,
    loader: 'babel-loader'
  },
  {
    test: /\.js$/,
    loader: 'babel-loader',
    exclude: /node_modules/
  }
]

}
}

回答
編輯回答
放開她

1.樣式的按需加載意義不大。
css樣式的執(zhí)行不像js,js引擎是單線程,基于事件循環(huán)來運(yùn)行,有一個下載、解析的過程,做按需加載可以避免卡頓。
而css樣式是由瀏覽器的渲染引擎來做的,會同時構(gòu)建style數(shù)和DOM樹,是一次構(gòu)建完成的,按需加載反而需要不停的進(jìn)行樣式數(shù)的構(gòu)建。
2.樣式模塊化開發(fā)很重要。
css樣式利用less。scss等進(jìn)行模塊化開發(fā)很重要,可以避免樣式的多余和混亂。
3.你的樣式混亂了不是vue自身的問題。你需要檢查一下代碼
加了scoped的組件樣式,css選擇器后面會有hash值來區(qū)分,是不可能和外面的樣式混掉的,你可以在控制臺看到這個后綴

2017年12月4日 19:53
編輯回答
我不懂

你就做的一個單頁應(yīng)用,肯定所有樣式文件都在一個html里啊,
可以根據(jù)頁面做多入口打包,這樣一個頁面加載的相應(yīng)資源會少一些

2017年5月26日 00:52