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