想必很多人都經歷過做完乙個專案後,再打包發現某些檔案非常大,導致頁面載入時很慢,這就很影響使用者體驗了,所以在我經歷了一些打包後,講講如何有效地縮小包體積,加快頁面的首屏渲染相信很多專案都會用到polyfill 那麼一整個polyfill 會佔據很多的空間,這個時候需要使用動態polyfill來解決這個問題了:
在index.html
檔案中引入:
你可以開啟在最新的瀏覽器中,會發現他並沒有什麼polyfill,而如果你開啟移動端的模式,並且重新重新整理頁面的話,可以發現他又多了一些方法;
這個就是動態polyfill 他會根據瀏覽器標頭來返回不同的polyfill
這裡放下他的文件:
使用過 vue-cli 建立的專案,應該都能看到,這些外掛程式,在build/webpack.prod.conf.js
檔案中可以觀察到這些外掛程式,使用 react 專案的可以照著配,使用一下相同的外掛程式;
使用哪些請自行酌情判斷,我來簡介一些主要外掛程式的作用:
在這裡附上所有外掛程式的說明:
先上我的專案裡打包後的檔案體積,該專案使用 vue-cli 構建:
可以看到佔體積最大的是 vendor.js 這個檔案
這個專案所佔的檔案基本是所用的包的**,如 vue ,vuex,vue-router,element-ui等檔案的 js **
我在之前搜尋壓縮**的部落格時,經常也會看到 dll 外掛程式能夠壓縮體積,但是經過實踐證明,這個結論是錯誤的;
他的作用只是加快 run build 和 run dev 的速度,但是,相較於使用 cdn 加速,是一點優勢都沒有,下面來看
新增 dll 之後的檔案大小:
新增優化 js **後的檔案大小:
通過看到檔案是壓縮了,但是仍然還沒有我正常情況下的檔案小,也許是我優化的問題,但是再優化,最多也就是和正常情況差不多,仍然沒有壓縮體積的作用;
可以得出結論 dllplugin 基本上是只用於開發環境的;
目前來說這是最好的乙個方法了;
可以先使用 analys 分析一下, vendor 裡最大占用的外掛程式是什麼,根據結果選擇;
比如 我的專案中 element-ui 和 vue 的 js 檔案是佔據第一和第二的大小的,所以需要將這2個檔案使用 cdn 加速來替代;
需要注意的是使用 cdn 的檔案不要太多,盡量不超過3個檔案
可以使用免費的bootcdn 加速
需要注意要將檔案放在前面一點
在build/webpack.base.conf.js 檔案的
module.exports裡新增
:
externals: ,
在 main.js和任何引用過vue 檔案的地方:刪除 import vue from 'vue',如果有乙個沒有刪,那麼打包時還會把檔案引用的;
並且刪除 import elementui from 'element-ui' 和 vue.use(elementui)
如果新增了eslint 那麼可能會報錯 可以使用 const vue = window.vue來去除報錯,
如果仍需要在 main.js 裡使用 element 的話可以通過window.element來引用;
這個地方我說錯了,關於 vue和 element 的 import 不用修改
但是要保證externals
和main.js
中引入的是一樣的
比如:
externals: ,
和
import element from 'element-ui'
需要對應
前車之鑑,還望各位周知
打包後可以有效減小包體積:
這個方法的壓縮**能力是非常恐怖的,壓縮率可達70%,不過需要了解的是需要伺服器開啟 gzip 加速才管用,我沒使用這個方法,不排除他會對伺服器會造成一定的壓力;
如果需要polyfill的話,可以使用動態polyfill來替代,如果伺服器支援 gzip 加速且不擔心伺服器壓力的話,那麼可以使用 gzip 來加速,否則使用 cdn 加速主要檔案的方法來壓縮**,當然首先你也需要新增 webpack 外掛程式來優化 js **;
webpack壓縮打包不成功
p.p1 p.p2 p.p3 p.p4 p.p5 p.p6 span.s1 span.s2 span.s3 span.s4 專案壓縮打包時,出現如下問題 unexpected token node modules pingyin lib index.js 思路一 pinyin模組是es6編寫的,in...
webpack打包快取 webpack打包效能分析
webpack提供的uglifyjs外掛程式由於採用單執行緒壓縮,速度很慢 webpack parallel uglify plugin外掛程式可以並行執行uglifyjs外掛程式,這可以有效減少構建時間,當然,該外掛程式應用於生產環境而非開發環境,配置如下 var paralleluglifypl...
webpack打包快取 webpack打包優化探索
雖然webpack的已經公升級到了webpack4,而我們目前還在使用 webpack3,但其中的優化點都大同小異,公升級後同樣適用。效能優化初步原則 這三條原則永遠是一切優化的前提 優化配置 公升級webpack 3,優化js的編譯能力 scope hoisting 1performance 減小...