1婶芭,什么是bundle皮服,什么是chunk楞艾,什么是module
答案:bundle是由webpack打包出來的文件,chunk是指webpack在進行模塊的依賴分析的時候冰更,代碼分割出來的代碼塊产徊。module是開發(fā)中的單個模塊。
2蜀细,webpack的構建流程
答案:
初始化參數(shù):解析webpack配置參數(shù)舟铜,合并shell傳入和webpack.config.js文件配置的參數(shù),形成最后的配置結果奠衔;
開始編譯:上一步得到的參數(shù)初始化compiler對象谆刨,注冊所有配置的插件塘娶,插件監(jiān)聽webpack構建生命周期的事件節(jié)點,做出相應的反應痊夭,執(zhí)行對象的 run 方法開始執(zhí)行編譯刁岸;
確定入口:從配置的entry入口,開始解析文件構建AST語法樹她我,找出依賴虹曙,遞歸下去;
編譯模塊:遞歸中根據(jù)文件類型和loader配置番舆,調(diào)用所有配置的loader對文件進行轉換酝碳,再找出該模塊依賴的模塊,再遞歸本步驟直到所有入口依賴的文件都經(jīng)過了本步驟的處理恨狈;
完成模塊編譯并輸出:遞歸完事后疏哗,得到每個文件結果,包含每個模塊以及他們之間的依賴關系禾怠,根據(jù)entry或分包配置生成代碼塊chunk返奉;
輸出完成:輸出所有的chunk到文件系統(tǒng);
注意:在構建生命周期中有一系列插件在做合適的時機做合適事情吗氏,比如UglifyPlugin會在loader轉換遞歸完對結果使用UglifyJs壓縮覆蓋之前的結果芽偏。
知識點鏈接:https://www.cnblogs.com/chengxs/p/11022842.html
3,說說一下loader是何作用
css-loader 處理css中路徑引用等問題
style-loader 動態(tài)把樣式寫入css
sass-loader scss編譯器
less-loader less編譯器
postcss-loader scss再處理
babel-loader:轉化ES6代碼
jsx-loader:識別js中的 jsx 語法
**url-loader: **圖片處理 npm install --save-dev url-loadr
file-loader: 文件加載 npm install --save-dev file-loader
json-loader:json處理 npm install --save-dev json-loader
raw-loader: html處理 npm install --save-dev raw-loader
4牲证,webpack打包是如何優(yōu)化前端性能的
答案:
第三方庫的處理 2將 loader 由單進程轉為多進程
構建結果體積壓縮哮针,文件結構可視化,找出導致體積過大的原因
拆分資源 5刪除冗余代碼 5按需加載