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