2026-04-02 vite原理(豆包搬過來的)

好好復(fù)習(xí),天天向上~八股文還是要背背

Vite 原理(前端面試高頻考點(diǎn),精簡好記版)

核心一句話:Vite 利用瀏覽器原生 ES Modules(ESM),開發(fā)階段不打包、按需編譯,啟動(dòng)極快;生產(chǎn)環(huán)境用 Rollup 打包,兼顧體積與兼容性。


1. 開發(fā)環(huán)境原理(核心亮點(diǎn))

① 基于瀏覽器原生 ESM

  • 現(xiàn)代瀏覽器支持 <script type="module">
  • 瀏覽器會(huì)自動(dòng)發(fā)起請求去加載對(duì)應(yīng)的 import 模塊
  • Vite 做的是:啟動(dòng)一個(gè) dev server,攔截這些請求,實(shí)時(shí)編譯后返回

② 不進(jìn)行全量打包

  • Webpack 等是:啟動(dòng)前先把所有依賴打包成 bundle
  • Vite:啟動(dòng)時(shí)不打包,只預(yù)構(gòu)建依賴,代碼文件用到哪個(gè)才編譯哪個(gè)
    → 所以項(xiàng)目越大,Vite 啟動(dòng)速度優(yōu)勢越明顯

③ 依賴預(yù)構(gòu)建(Dependency Pre-bundling)

  • 目的:
    1. 將 CommonJS/UMD 依賴轉(zhuǎn)為 ESM
    2. 把多個(gè)依賴文件打包成一個(gè),減少請求數(shù)量
  • 工具:esbuild(Go 編寫,比 Webpack 快 10~100 倍)

④ 熱更新(HMR)極致快

  • Webpack 修改文件后要重新編譯相關(guān) chunk
  • Vite 利用 ESM 特性:
    • 精準(zhǔn)熱更新修改的模塊
    • 不刷新頁面,不重新編譯無關(guān)代碼
    • 緩存機(jī)制保證極快響應(yīng)

2. 生產(chǎn)環(huán)境原理

  • 開發(fā)用 esbuild 提速
  • 生產(chǎn)環(huán)境默認(rèn)使用 Rollup 打包
    原因:
    • esbuild 快,但代碼分割、CSS 處理、兼容、tree-shaking不如 Rollup 成熟
    • Vite 在 Rollup 之上做了一層優(yōu)化配置,保證打包體積與性能

3. 整體工作流程(一句話串起來)

  1. 啟動(dòng) dev server
  2. 對(duì)第三方依賴做 esbuild 預(yù)構(gòu)建
  3. 瀏覽器加載入口 ESM 文件
  4. 攔截瀏覽器的 import 請求
  5. 實(shí)時(shí)編譯 Vue/TS/JSX 等文件并返回
  6. 修改文件時(shí),精準(zhǔn) HMR 熱更新
  7. 生產(chǎn)構(gòu)建時(shí),使用 Rollup 打包輸出

4. 面試標(biāo)準(zhǔn)回答(背這個(gè))

Vite 的核心原理是利用瀏覽器原生支持 ES Module,在開發(fā)環(huán)境下不需要像 Webpack 那樣全量打包,而是啟動(dòng)一個(gè)開發(fā)服務(wù)器,攔截瀏覽器發(fā)起的模塊請求,實(shí)時(shí)編譯并返回對(duì)應(yīng)文件,實(shí)現(xiàn)按需加載、按需編譯,所以啟動(dòng)非常快。
同時(shí)它會(huì)用 esbuild 對(duì)第三方依賴進(jìn)行預(yù)構(gòu)建,把 CommonJS 轉(zhuǎn)成 ESM 并減少請求。熱更新也是只更新修改的模塊,速度極快。
生產(chǎn)環(huán)境則基于 Rollup 打包,保證構(gòu)建產(chǎn)物的兼容性和打包優(yōu)化能力。


5. 常被追問

  • 為什么開發(fā)用 esbuild,生產(chǎn)用 Rollup?
    答:esbuild 快但生態(tài)和優(yōu)化不如 Rollup 成熟,生產(chǎn)需要更穩(wěn)定的代碼分割、搖樹、兼容等能力。

  • Vite 比 Webpack 快在哪?
    答:免打包 + 按需編譯 + esbuild 預(yù)構(gòu)建 + 精準(zhǔn) HMR。

需要我順便給你整理 Vite + Vue3 項(xiàng)目優(yōu)化面試題 嗎?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容