vue項目過大维咸,cdn加速vue項目

初次加載vue緩慢

很多小伙伴想必做vue項目的時候,會出初次加載速度緩慢的情況惠爽,拿我接盤公司的小項目說癌蓖,會出現(xiàn)初次加載20s-60s的情況,然后自己看了下接盤的項目婚肆,打包后文件大小如下:

接盤項目打包后文件

其中最大的chunk-vendors文件租副,經(jīng)過網(wǎng)上了解,這是第三方庫的打包組合较性。其次js文件也很大用僧。
可以看出就算經(jīng)過gzip壓縮也需要下載接近1M的下載量,拿一個同時在線人數(shù)300-400人來說赞咙,一般購買的服務(wù)器為5m帶寬责循,所謂的5m帶寬其實是625kb 的下載速度,項目更新后加載頁面需要重新更新緩存下載完整項目攀操,拿25個人上班重新打開網(wǎng)頁加載完整項目來說 院仿,且大概計算gzip壓縮后體積為1M625kb/S 除以 25 速和,則個人下載速度為25kb/S歹垫,loading的時間為40s,看著這速度已經(jīng)吐了颠放。

優(yōu)化方案 vue.config.js

上cdn加速加載第三方包

業(yè)務(wù)代碼是經(jīng)常更新迭代的
為了讓瀏覽器盡可能長的時間緩存我們的靜態(tài)文件排惨,如果把類庫代碼和業(yè)務(wù)代碼打包在一起,那么類庫代碼會跟著業(yè)務(wù)代碼的更新而更新碰凶,而不能長時間的是瀏覽器里緩存暮芭,希望利用緩存鹿驼,減少瀏覽器流量,提高用戶瀏覽器加載速度谴麦,所以單獨拆分出來進(jìn)行打包
一般第三方包都會有script引入方案蠢沿,只需要打包的時候忽略制定第三方包伸头,然后在模板上加上相應(yīng)的導(dǎo)入鏈接匾效。
首先沒有vue.config.js需要在項目根目錄創(chuàng)建
具體代碼如下:

const cdn = {
    // 忽略打包的第三方庫
    externals: {
      vue: 'Vue',
      "element-ui": "ELEMENT",
      'vue-router': 'VueRouter',
      vuex: 'Vuex',
      axios: 'axios',
      moment: "moment",
      echarts: "echarts"
    },
  
    // 通過cdn方式使用
    js: [
      'https://cdn.bootcss.com/vue/2.6.10/vue.runtime.min.js',
      'https://cdn.bootcss.com/vue-router/3.1.2/vue-router.min.js',
      'https://cdn.bootcss.com/vuex/3.1.1/vuex.min.js',
      'https://cdn.bootcss.com/axios/0.19.0/axios.min.js',
      'https://cdn.bootcss.com/moment.js/2.24.0/moment.min.js',
      'https://cdn.bootcss.com/echarts/3.7.1/echarts.min.js',
      "https://cdn.bootcdn.net/ajax/libs/element-ui/2.8.2/index.js",
    ],
  
    css: ["https://unpkg.com/element-ui@2.8.2/lib/theme-chalk/index.css"],
  }

module.exports = {
    publicPath: '/CRM/dist/',
    // publicPath: './',
    chainWebpack: config => {
        config.plugin('html').tap(args => {
            args[0].cdn = cdn
            return args
          })
          config.plugins.delete('prefetch')
    },
    //打包忽略第三方庫
    configureWebpack: { 
        externals: cdn.externals
    },
}

然后在 pulic/index.html 模板相應(yīng)位置上加上(添加位置自己看著來)

//下列是css ,script的話注釋換一下,仔細(xì)看很好理解恤磷,config配置是添加一個cdn變量面哼,然后在模板中遍歷添加
 <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
    <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="stylesheet">
    <!-- <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>" crossorigin="anonymous"></script> --> 
  <% } %>

坑點:比如我在打包后運行就出現(xiàn)ElementUI is not defined的報錯
研究了一下Element-ui 然后發(fā)現(xiàn)script導(dǎo)入的代碼如下:

Element-ui

可以發(fā)現(xiàn)他定義的變量為 ELEMENT 而我們在開發(fā)過程中mian.js采用官方推薦Vue.use(ElementUI)
更改后可以運行。
然后我們看結(jié)果
cdn

gzip之后是400kb減少了600kb扫步,可以看出現(xiàn)在app.js邏輯代碼計較大
(還有第三方庫沒上cdn不是最終結(jié)果魔策,加上這是接盤準(zhǔn)備重構(gòu)的系統(tǒng),所以比較臃腫)

路由懶加載

上圖可以看出現(xiàn)在app.js邏輯代碼還是比較大河胎,而且js文件只有兩個一看就是沒拆分闯袒,直接上最簡單路由懶加載,直接抄官方推薦就好游岳,使用以下方式加載組件

const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
結(jié)果
接盤代碼真是難

記過gzip打包后算了算是115kb左右(還有一些庫沒上cdn)政敢,上了會更少。


有不對的地方胚迫,望留言指出喷户,
后續(xù)隨緣更新 業(yè)務(wù)js代碼拆分...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市访锻,隨后出現(xiàn)的幾起案子褪尝,更是在濱河造成了極大的恐慌,老刑警劉巖期犬,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件河哑,死亡現(xiàn)場離奇詭異,居然都是意外死亡龟虎,警方通過查閱死者的電腦和手機(jī)灾馒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遣总,“玉大人睬罗,你說我怎么就攤上這事⌒癯猓” “怎么了容达?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長垂券。 經(jīng)常有香客問我花盐,道長羡滑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任算芯,我火速辦了婚禮柒昏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘熙揍。我一直安慰自己职祷,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布届囚。 她就那樣靜靜地躺著有梆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪意系。 梳的紋絲不亂的頭發(fā)上泥耀,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機(jī)與錄音蛔添,去河邊找鬼痰催。 笑死,一個胖子當(dāng)著我的面吹牛迎瞧,可吹牛的內(nèi)容都是我干的夸溶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼夹攒,長吁一口氣:“原來是場噩夢啊……” “哼蜘醋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起咏尝,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤压语,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后编检,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胎食,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年允懂,在試婚紗的時候發(fā)現(xiàn)自己被綠了厕怜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蕾总,死狀恐怖粥航,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情生百,我是刑警寧澤递雀,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站蚀浆,受9級特大地震影響缀程,放射性物質(zhì)發(fā)生泄漏搜吧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一杨凑、第九天 我趴在偏房一處隱蔽的房頂上張望滤奈。 院中可真熱鬧,春花似錦撩满、人聲如沸蜒程。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搞糕。三九已至勇吊,卻和暖如春曼追,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汉规。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工礼殊, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人针史。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓晶伦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親啄枕。 傳聞我的和親對象是個殘疾皇子婚陪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354