Vite 的設計理念,本文就來詳細看一下!
近日,在 ViteConf 2023 上,Vite 團隊成員 patak 發(fā)表了題為《Vite's Philosophy》 的演講,分享了 Vite 的設計理念,本文就來詳細看一下!
精簡可擴展的核心
Vite 并不打算為每個用戶的每種用例提供支持。Vite 旨在支持最常見的模式來構建開箱即用的 Web 應用程序,但 Vite 核心必須保持精簡,API 接口較小,以保持項目的長期可維護性。這個目標的實現(xiàn)得益于 Vite 基于 rollup 的插件系統(tǒng)??梢宰鳛橥獠坎寮崿F(xiàn)的功能一般不會添加到 Vite 核心中。vite-plugin-pwa 是 Vite 核心可以實現(xiàn)的功能的一個很好的例子,并且還有很多維護良好的插件可以滿足你的需求。Vite 與 Rollup 項目緊密合作,確保插件盡可能在純 rollup 和 Vite 項目中使用,盡可能將所需的擴展推送到 Plugin API 上游。
推動現(xiàn)代化 Web
Vite 推出了一些注重編寫現(xiàn)代代碼的特性。例如:
- 源代碼只能用 ESM 編寫,非 ESM 依賴項需要預先打包為 ESM 才能正常工作。
- 鼓勵使用新的 Worker 語法編寫 Web Worker 以遵循現(xiàn)代標準。
- Node.js 模塊無法在瀏覽器中使用。
添加新功能時,將遵循這些模式來創(chuàng)建面向未來的 API,該 API 可能并不總是與其他構建工具兼容。
務實的性能策略
Vite自誕生之日起就專注于性能。其開發(fā)服務器架構使 HMR 能夠隨著項目規(guī)模的擴展而保持快速運行。Vite 使用 esbuild 和 SWC 等原生工具來實現(xiàn)密集型任務,但將其余代碼保留在 JS 中,以平衡速度和靈活性。當需要時,框架插件將利用 Babel 來編譯用戶代碼。在構建期間,Vite 目前使用 Rollup,其中打包大小和訪問廣泛的插件生態(tài)系統(tǒng)比原始速度更重要。Vite 將繼續(xù)在內(nèi)部發(fā)展,使用新的庫,利用出現(xiàn)的新庫來改善開發(fā)體驗,同時保持其 API 的穩(wěn)定性。
在 Vite 之上構建框架
盡管用戶可以直接使用 Vite,但它在創(chuàng)建框架工具方面表現(xiàn)出色。Vite 核心不依賴于特定框架,但為每個UI框架提供了優(yōu)化的插件。其 JS API 允許應用框架作者利用 Vite 的功能為用戶創(chuàng)建定制化的體驗。Vite 包含對 SSR 原語的支持,這些原語通常出現(xiàn)在更高級別的工具中,但卻是構建現(xiàn)代 Web 框架的基礎。Vite 插件則通過提供一種在不同框架之間共享的方式來完善整個生態(tài)系統(tǒng)。Vite 也非常適合與 Ruby 和 Laravel 等后端框架搭配使用。
活躍的生態(tài)系統(tǒng)
Vite 的進化是框架和插件維護者、用戶和 Vite 團隊之間的合作。一旦項目采用 Vite,就鼓勵積極參與 Vite 核心的開發(fā)。Vite 團隊與生態(tài)系統(tǒng)中的主要項目密切合作,以減少每個發(fā)布版本上的回歸,這得益于 vite-ecosystem-ci 等工具的支持。它使我們能夠在選定的 PR 上使用 Vite 運行主要項目的 CI,并讓我們清楚地了解生態(tài)系統(tǒng)對發(fā)布的反應。在回歸影響用戶之前修復它們,并允許項目在發(fā)布后立即更新到下一個版本。