webpack原理

webpack出現的原因

模塊的加載和傳輸過程中,若每個模塊都請求一個,這樣會由於請求次數過多,導致啓動速度過慢。若是把所有模塊打包成一個文件只請求一次,會導致文件太大,每次請求都會消耗很大的流量。最好的方式是把代碼塊按塊區分,按需進行懶加載,按需懶加載就需要對代碼塊進行靜態分析,編譯打包,這就是webpack所要做的工作。

webpack的原理

對各個模塊之間的依賴關係進行靜態分析,然後將這些模塊按照一定的規則生成對應的靜態資源。

entry: 入口文件, webpack執行構建的第一步將從Entry開始,可抽象成輸入
output: 輸出結果,再webpack經過一些列處理並得出最終想要的代碼後輸出結果
module: 模塊,在webpcak中一切皆模塊,一個模塊對應一個文件。webpack會從配置的Entry開始遞歸找出所有依賴的模塊。
loaders: 模塊轉換器,將不同類型的文件進行處理,例如less、sass文件轉換成css,typeScript轉換成js
plugin: 擴展插件,在webpack構建過程實現擴展邏輯,來改變構建結果和做我們想要做的事情
chunk: 代碼塊,一個Chunk由多個模塊組合而成,用於代碼合併於分割

webpack工作流程

webpack啓動後會從Entry文件的Module開始構建,遞歸解析這個Entry依賴的所有Module,每找到一個Module就會根據配置的Loader去找相應的轉換規則,對Module進行轉換之後,再解析出當前Module依賴的Module。這些Module會以Entry爲單位進行分組,一個Entry及其所有依賴的Module被分到一個組也就是一個Chunk。最後,Webpack會將所有的Chunk轉換成對應的Bundle文件輸出,再整個流程中,Webpack會在恰當時機執行Plugin裏定義的邏輯。

關於mainifest.bundle.js

這個文件是最先加載的,負責解析webpack打包的其他bundle文件,使其按要求進行加載和執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章