Webpack Code Splitting

Code Splitting

將代碼拆分成多個(gè)bundle,時(shí)webpack提供的比較吸引人的功能。
拆分之后的代碼可以按照需求進(jìn)行動(dòng)態(tài)加載而不需要一次把所有代碼都進(jìn)行加載。
比如,當(dāng)用戶導(dǎo)航都某個(gè)路由頁面,或者基于用戶觸發(fā)的某個(gè)事件后進(jìn)行加載。
將代碼拆分的力度比較細(xì)之后,可以按照優(yōu)先級(jí)來進(jìn)行加載,從而減少用戶首次加載的等待時(shí)間。

webpack主要支持兩種類型的代碼拆分。

1.基于緩存及并行加載的資源拆分

Vendor代碼拆分

業(yè)務(wù)代碼中會(huì)使用到很多第三方的類庫,將第三方類庫拆分成單獨(dú)的bundle。
可以在業(yè)務(wù)代碼改變的情況下,不改變拆分的第三方庫的bundle,
這樣就可以讓瀏覽器對該bundle做緩存,從而避免多次下載。
為了實(shí)現(xiàn)這點(diǎn),需要vendor的文件名的[hash]保證固定,無論業(yè)務(wù)代碼怎么變,[hash]都不改變。更多的內(nèi)容,參考Code Spliting - Libraries.

CSS拆分

某些場景下可能也希望將style樣式從邏輯代碼中拆分到獨(dú)立的bundle。
這樣做可以讓瀏覽器對該部分樣式更好的做緩存并可以讓網(wǎng)頁異步加載樣式,從而避免FOUC
更多內(nèi)容參考使用ExtractTextWebpackPlugin拆分css

2.按需求進(jìn)行代碼拆分

將資源進(jìn)行拆分,需要以配置文件的方式設(shè)置拆分的文件。
同樣的也可以以代碼的形式對代碼進(jìn)行拆分。
這樣做可以拆分出顆粒度更細(xì)的bundle。比如:可以按照應(yīng)用程序的路由或每個(gè)用戶的使用習(xí)慣進(jìn)行拆分。這樣可以避免用戶加載非必要bundle,從而提升加載的速度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Code Splitting - Libraries 文檔地址應(yīng)用程序一般會(huì)使用第三方的類庫,這些類庫一般不會(huì)經(jīng)常...
    yftx_閱讀 305評論 0 0
  • 代碼拆分方案 1. Code Splitting - CSS使用插件:npm i --save-dev extra...
    賽亞人之神閱讀 427評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • Webpack 代碼分離 :pushpin: 提示:版本問題本文基于 webpack 2.x 版本。webpack...
    靜默虛空閱讀 944評論 0 2
  • 1 ?文章寫字大學(xué)時(shí)期,當(dāng)時(shí)對愛情的理解或許沒有現(xiàn)在來的真切,現(xiàn)在回頭在看看當(dāng)時(shí)的想法,不能說完全不贊成,大概是有...
    深漂大叔閱讀 607評論 0 2

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