vue打包優(yōu)化——vendor體積過大

寫在前面

在Vue項(xiàng)目中牛郑,引入到工程中的所有js、css文件签财,編譯時都會被打包進(jìn)vendor.js串慰,瀏覽器在加載該文件之后才能開始顯示首屏。若是引入的庫眾多荠卷,那么vendor.js文件體積將會相當(dāng)?shù)拇竽B绊懯组_的體驗(yàn)。

一油宜、分析打包文件

首先引入webpack-bundle-analyzer插件掂碱,分析打包后的vendor
  • 安裝

npm install webpack-bundle-analyzer --save-dev
優(yōu)化前分析

打包結(jié)果
  • 配置

在vue.config.js文件中的chainWebpack配置插件,默認(rèn)會在8888端口打開


 chainWebpack: config => {
     config.plugin('webpack-bundle-analyzer')
        .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
  }

發(fā)現(xiàn)主要是moment和vue系列的文件占用比較大慎冤。

二疼燥、moment優(yōu)化

根據(jù)之前打包分析圖來看,主要是locale下moment的其他語言包占用體積較大蚁堤。默認(rèn)是en的語言包醉者,所以在無需其他語言的情況下,可以直接忽略掉locale下的文件不打包披诗。
解決方案:用webpack自帶的IgnorePlugin插件

vue.config.js文件

var webpack = require('webpack')

module.exports = {
 // ...此處省略其他配置
    
 chainWebpack: config => {
     config.plugin('ignore')
      .use(new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)); //忽略/moment/locale下的所有文件
  }
  
  // ...此處省略其他配置
}

三撬即、vue、vue-router呈队、vuex改為cdn引入

將引用的外部js剥槐、css文件剝離開來,不編譯到vendor.js中宪摧,而是用資源的形式引用粒竖,這樣瀏覽器可以使用多個線程異步將vendor.js、外部的js等加載下來几于,達(dá)到加速首開的目的蕊苗。

外部的庫文件,可以使用CDN資源沿彭,或者別的服務(wù)器資源等朽砰。

1. vue.config.js中增加externals,將引用的外部模塊導(dǎo)入

    module.exports = {
 // ...此處省略其他配置
    
 chainWebpack: config => {
    var externals = {
      'vue': 'Vue',
      'vue-router': 'VueRouter',
      'vuex': 'Vuex'
    }
    config.externals(externals)
  }
  
  // ...此處省略其他配置
}

2. html文件中直接script引入cdn文件

cdn引入的地址可以參考官網(wǎng)
https://cn.vuejs.org/v2/guide/installation.html#CDN

引入cdn文件

也可以像這篇文章是直接在vue.config.js中配置cdn的url地址vue-cli3打包項(xiàng)目引入外部CDN資源文件

四、優(yōu)化結(jié)果

moment的其他語言包沒有被打包了锅移,vue等文件也都用的cdn文件熔掺,沒有被打包進(jìn)去vendor。


優(yōu)化后打包分析

優(yōu)化后打包結(jié)果

network

五非剃、vue項(xiàng)目的其他優(yōu)化建議

  1. productsourceMap:false(在vue.config.js中配置)
    打包后每個js文件都有一個map文件置逻。
    map文件的作用:項(xiàng)目打包后,代碼都是經(jīng)過壓縮加密的备绽,如果運(yùn)行時報(bào)錯券坞,輸出的錯誤信息無法準(zhǔn)確得知是哪里的代碼報(bào)錯。 有了map就可以像未加密的代碼一樣肺素,準(zhǔn)確的輸出是哪一行哪一列有錯恨锚。
    配置該項(xiàng)為false可以不生成map文件。

  2. 路由懶加載(按需加載)
    可參考官方文檔倍靡。
    踩過的一個坑:import里面的組件路徑猴伶,可以用字符串模板``形式,但是不支持變量賦值塌西。

  3. 使用插件去除console他挎、warnings、debugger等無用內(nèi)容來減少文件大小

// 安裝uglifyjs-webpack-plugin
cnpm install uglifyjs-webpack-plugin --save-dev
  1. 開啟Gzip壓縮
    https://www.cnblogs.com/yangshifu/p/9724709.html
    https://www.jb51.net/article/148254.html

參考文獻(xiàn)

  1. Vue中使用cdn加載資源

  2. vue-cli3打包項(xiàng)目引入外部CDN資源文件

  3. 關(guān)于moment打包的那些事

  4. vue項(xiàng)目打包優(yōu)化之-productionSourceMap設(shè)置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捡需,一起剝皮案震驚了整個濱河市办桨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌站辉,老刑警劉巖呢撞,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饰剥,居然都是意外死亡殊霞,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門汰蓉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绷蹲,“玉大人,你說我怎么就攤上這事古沥∪秤遥” “怎么了娇跟?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵岩齿,是天一觀的道長。 經(jīng)常有香客問我苞俘,道長盹沈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮乞封,結(jié)果婚禮上做裙,老公的妹妹穿的比我還像新娘。我一直安慰自己肃晚,他們只是感情好锚贱,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著关串,像睡著了一般拧廊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晋修,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天吧碾,我揣著相機(jī)與錄音,去河邊找鬼墓卦。 笑死倦春,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的落剪。 我是一名探鬼主播睁本,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼著榴!你這毒婦竟也來了添履?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤脑又,失蹤者是張志新(化名)和其女友劉穎暮胧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體问麸,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡往衷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了严卖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片席舍。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哮笆,靈堂內(nèi)的尸體忽然破棺而出来颤,到底是詐尸還是另有隱情,我是刑警寧澤稠肘,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布福铅,位于F島的核電站,受9級特大地震影響项阴,放射性物質(zhì)發(fā)生泄漏滑黔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望略荡。 院中可真熱鬧庵佣,春花似錦、人聲如沸汛兜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琐簇。三九已至兔跌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間帝嗡,已是汗流浹背晶通。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哟玷,地道東北人狮辽。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像巢寡,于是被迫代替她去往敵國和親喉脖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容