Vite為何比Webpack更好?
Vite 是新一代的 JavaScript 構建工具,它利用瀏覽器中 ES 模組的可用性和編譯為本機捆綁器,為您帶來最新的 JavaScript 技術所能獲得的最佳開發者體驗。
透過使用基於 ESM 的工作流程進行本地開發,Vite 確保您的開發伺服器即使在處理大型 JavaScript 應用程式時也能保持快速。
Vite 還提供了一個合理的生產構建配置,可以處理基於庫的語法,如 JSX、Vue 和 TypeScript。
透過在底層使用 Rollup,Vite 確保為您的生產構建實現效能最佳化技術,如 tree-shaking、延遲載入和常見的塊拆分。
最後,您還可以透過編寫外掛來擴充套件 Vite 功能。
雖然 Webpack 仍然是許多流行應用程式(如 Next.js 和 Create React App)的預設 JavaScript 構建工具,但鑑於開發者社群的積極反饋,Vite 很有可能成為未來最受歡迎的選擇。
Webpack構建速度慢
Webpack是一個基於捆綁器的構建工具,這意味著要為您的應用程式提供服務,它需要抓取、處理和連線應用程式的整個 JavaScript 檔案。這適用於您編寫的依賴項和應用程式程式碼。
這就是為什麼使用 Webpack 構建用於開發的應用程式和啟動開發伺服器可能需要非常長的時間的原因——一些大型應用程式可能需要 10 多分鐘。
然後,當您儲存檔案時,整個 JavaScript 包將由 Webpack 重新構建,這就是為什麼更改可能需要長達 10 秒才能反映在瀏覽器中,即使啟用了 HMR。Webpack 導致的緩慢反饋迴圈給開發大型 JavaScript 應用程式的開發人員帶來了糟糕的開發體驗。
Vite的核心理念:非捆綁開發構建
當您開始開發構建時,Vite 將首先將您的 JavaScript 模組分為兩類:依賴模組和應用程式模組。
瀏覽器中 ES 模組的可用性允許您在瀏覽器上執行 JavaScript 應用程式,而無需將它們捆綁在一起。Vite 的核心思想很簡單:當瀏覽器請求它時,使用 ES 模組轉換並提供一段應用程式程式碼。
- 依賴項模組
是您從node_modules資料夾中匯入的JavaScript 模組。這些模組將使用esbuild進行處理和捆綁,esbuild是一個用 Go 編寫的 JavaScript 捆綁器,執行速度比 Webpack 快 10-100 倍。
- 應用程式模組
是您為應用程式編寫的模組,通常涉及特定於庫的擴充套件,如、.jsx或.vue檔案.scss。
雖然像 Webpack 這樣的基於捆綁器的工作流必須在單個瀏覽器請求之前處理您的整個 JavaScript 模組,但 Vite 只在單個瀏覽器請求之前處理您的依賴模組。
當您的應用程式需要時,您的應用程式模組將由 Vite 轉換和服務:
Vite 的捆綁生產版本
雖然現在所有主流瀏覽器都支援原生 ES 模組,但釋出一個捆綁應用程式,它實現了諸如 tree-shaking、延遲載入和通用塊拆分等效能最佳化技術,仍然比非捆綁應用程式帶來更好的整體效能。
出於這個原因,Vite 附帶了一個預先配置的build命令,該命令使用Rollup捆綁您的應用程式。Vite 還為您提供了合理的預設 Rollup 配置,您可以在需要時對其進行自定義。
Vite 入門
create-app要開始使用 Vite,您可以使用 Vite 的載入程式立即建立一個預配置的應用程式。該工具支援流行的前端庫,包括 React、Vue 和 Svelte。
這是執行 Vite 引導的應用程式所需的命令:
$ npm init @vitejs/app # or $ yarn create @vitejs/app |
終端中的提示將指導您建立正確的應用程式。建立應用程式後,您需要執行npm install然後npm run dev啟動開發伺服器。
Vite 支援許多官方模板,包括原生 JavaScript 和 TypeScript。
相關文章
- webpack和vite的區別,為什麼vite啟動速度比webpack快?WebVite
- vite和webpack對比ViteWeb
- 為何IntelliJ IDEA比Eclipse更好IntelliJIdeaEclipse
- 為什麼我們從Webpack切換到Vite - ReplitWebVite
- 為什麼REST比GraphQL更好? - TomaszJaskuλaREST
- 開發者為何逃離Facebook:移動平臺前景更好
- 分析:Facebook為何比Google強大Go
- 為什麼使用指標比使用物件本身更好?指標物件
- 為什麼Kotlin比任何愚蠢的語言更好Kotlin
- webpack 專案接入Vite的通用方案介紹(上)WebVite
- 輕量迅捷時代,Vite 與Webpack 誰贏誰輸ViteWeb
- 為什麼 APISIX Ingress 是比 Traefik 更好的選擇?API
- 為什麼說rollup比webpack更適合打包庫Web
- 比cat更好用的命令!
- 比df更好用的命令!
- C++中為什麼使用指標比使用物件本身更好?C++指標物件
- vite2 + vite.config.js 比較坑的環境變數,vite2模式的使用ViteJS變數模式
- 為什麼 APISIX Ingress 是比 Ingress NGINX 更好的選擇?APINginx
- vue-cli3 vue2 保留 webpack 支援 vite 成功實踐VueWebVite
- Webpack Proxy 代理使用更好的方式提升開發效率Web
- 共享主機與VPS:恆訊科技分析為何VPS是更好的選擇?
- 為什麼說無程式碼開發比低程式碼開發更好?
- 為什麼Java在高速交易系統上比C ++更好? -efinancialcareersJavaNaN
- 何為高手
- 【譯】使用 Webpack 和 Poi 構建更好的 JavaScript 應用WebJavaScript
- 為老的vueCli專案新增vite支援VueVite
- HashMap為何執行緒不安全?HashMap,HashTable,ConcurrentHashMap對比HashMap執行緒
- SQL是比GraphQL更好的API語言?SQLAPI
- 比synchronized效能更好,功能更多的ReentrantLocksynchronizedReentrantLock
- 何為CDN模式模式
- 何為JSX?JS
- 何為封裝封裝
- 為何而跑?
- viteVite
- 何為軟連線、何為硬連結(含圖解)圖解
- Android為何比iOS卡?論1G記憶體的使用AndroidiOS記憶體
- 為什麼iPhone拍照更好看iPhone
- [譯] 如何成為更好的開發者