webpack的性能優(yōu)化

webpack項(xiàng)目?jī)?yōu)化主要分為兩個(gè)方面的優(yōu)化,生產(chǎn)環(huán)境的代碼優(yōu)化和開(kāi)發(fā)環(huán)境的項(xiàng)目構(gòu)建優(yōu)化

生產(chǎn)環(huán)境的代碼優(yōu)化

  • 第一、首屏加載速度 --- 由于spa應(yīng)用(單頁(yè)應(yīng)用)的特點(diǎn),其首次加載白屏問(wèn)題是不可避免的,我們只能通過(guò)一些方法減少白屏?xí)r間或者優(yōu)化白屏?xí)r的用戶體驗(yàn)
    1. 減少白屏?xí)r間
    • 將項(xiàng)目中的第三方安裝包通過(guò)CDN引入

      index.html

           <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
           <script src="https://cdn.bootcss.com/vue-router/3.0.2/vue-router.min.js"></script>
           <script src="https://cdn.bootcss.com/element-ui/2.6.1/index.js"></script>
           <script src="https://cdn.bootcss.com/lodash.js/4.17.11/lodash.min.js"></script>
      

      webpack的配置文件

           config.externals = {
                'vue': 'Vue',
                'vue-router': 'VueRouter',
                'element-ui': 'ELEMENT',
                'lodash': '_'
           }
      
    • 提取提取公共依賴(new webpack.optimize.CommonsChunkPlugin("common.js"))
    • 配置html、css代碼壓縮
    • 開(kāi)啟gzip壓縮(需要服務(wù)器也進(jìn)行g(shù)zip的配置)
    • 優(yōu)化白屏?xí)r的用戶體驗(yàn)
  1. 項(xiàng)目打包之后vendor或者app.css文件較大
    • 將我們不經(jīng)常改變版本的第三方安裝包(vue、vue-router、vux、axios、loadsh等)通過(guò)cdn的方式引入
    • 將我們使用的第三方組件庫(kù)的css文件也通過(guò)cdn引入
  2. 代碼分片實(shí)現(xiàn)路由懶加載
    • require.ensure([dependencies], callback,errorCalback,chunkName)
      path: 'home',
      getComponent: (nextState, cb) => {
        require.ensure([], require => {
          cb(null, require('./home'))
        })
      }
      
    • es6 的import()進(jìn)行動(dòng)態(tài)加載
    • Vue 的異步組件和 Webpack 的代碼分割功能
      const Foo = () => import('./Foo.vue')
      { path: '/foo', component: Foo }
      
  3. 優(yōu)化devtool減少文件體積
    • 關(guān)閉生產(chǎn)環(huán)境的SourceMap(生產(chǎn)環(huán)境的SourceMap真心沒(méi)有什么用處,如果糾結(jié)的話可以選擇開(kāi)啟低級(jí)別的SourceMap)具體配置參考

    https://webpack.js.org/configuration/devtool/#root

開(kāi)發(fā)環(huán)境的項(xiàng)目構(gòu)建優(yōu)化

  1. Dllplugin提高項(xiàng)目構(gòu)建速度
  2. 熱替換
         devServer: {
              contentBase: path.resolve(__dirname, 'dist'),//需要監(jiān)聽(tīng)的文件路徑
              host: '192.168.56.1',//服務(wù)器地址
              compress: true,//開(kāi)啟  服務(wù)器壓縮
              port: 3001 // 端口
         }
    
  3. 配置合適的 delvtool


  4. HappyPack 配置更多的電腦資源用于項(xiàng)目構(gòu)建
      const HappyPack = require('happypack');
      exports.module = {
           rules: [
                {
                     test: /.js$/,
                     use: 'happypack/loader'
                }
           ]
      };
      exports.plugins = [
           new HappyPack({
                loaders: [ 'babel-loader?presets[]=es2015' ]
           })
      ];
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今天終于過(guò)上一個(gè)周末了,終于不用陪女朋友逛街,看電影,吃吃吃的我立刻打開(kāi)電腦擼了一把代碼,爽的一匹。 嘿嘿...
    Yubble閱讀 509評(píng)論 0 1
  • 寫在開(kāi)頭 先說(shuō)說(shuō)為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,442評(píng)論 4 31
  • 原文http://www.cnblogs.com/libin-1/p/6596810.html 版本號(hào) vue-c...
    tengrl閱讀 3,874評(píng)論 0 0
  • 前言:在現(xiàn)實(shí)項(xiàng)目中,我們可能很少需要從頭開(kāi)始去配置一個(gè)webpack 項(xiàng)目,特別是webpack4.0發(fā)布以后,零...
    97e7dbf546de閱讀 1,781評(píng)論 0 14
  • 前端將大型項(xiàng)目分成一個(gè)個(gè)單獨(dú)的模塊,一般封裝好的每個(gè)模塊都會(huì)實(shí)現(xiàn)一個(gè)目的明確的完成的功能。如何處理這些模塊以及模塊...
    pixels閱讀 3,509評(píng)論 1 14

友情鏈接更多精彩內(nèi)容