webpack與vite的對比
- 2022 年 5 月 15 日
- 筆記
- javascript
vite與webpack的打包原理:
vite: 基於遊覽器原生ES Module,利用遊覽器解析import,伺服器端按需編譯返回
webpack: 逐級遞歸識別依賴,構建依賴圖譜->轉化AST語法樹->處理程式碼->轉換為遊覽器可識別的程式碼
vite相比webpack的優勢:
開發環境中,無需打包操作,可快速冷啟動:
由於vite啟動的時候不需要打包,也就無需分析模組依賴、編譯程式碼;
從底層原理上來說,vite是基於esbuild預構建依賴,而esbuild是採用go語言編寫,go語言的操作是納秒級別的
webpack是原生js編寫的,js是以毫秒計數的,所以vite比webpack啟動快很多;
真正的按需編譯,不再等待整個應用完成:
webpack: vite:
當遊覽器請求需要的模組時,再對模組進行編譯,這種按需動態編譯的模式,極大程度縮短了編譯時間,當項目越大,文件越多時,vite的開發優勢就越明顯
輕量快速的熱重載(HMR):
vite在HMR方面,當某個模組內容改變時,讓遊覽器重新請求該模組即可,而不用像webpack那樣重新將該模組的所有依賴重新編譯
vite相比webpack的劣勢:
生態不及webpack、載入器、插件不夠豐富
生產環境esbuild構建對於css和程式碼分割不夠友好
項目開發遊覽要支援ES Module,不能識別CommonJS語法
參考:
//blog.csdn.net/huangpb123/article/details/123313589
//blog.51cto.com/xuedingmaojun/2967713?ivk_sa=1024320u
//www.knowbaike.com/it/13131.html