最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

面試官:說說Webpack和Vite有哪些區(qū)別

 更新時間:2026年04月03日 09:42:31   作者:404星球的貓  
Vite基于ESM實現(xiàn)按需編譯,開發(fā)啟動和熱更新速度極快,Webpack采用全量打包,適合復雜項目但啟動較慢,這篇文章主要介紹了Webpack和Vite有哪些區(qū)別的相關(guān)資料,需要的朋友可以參考下

面試官:說說 Webpack 和 Vite 的區(qū)別

按“真實項目里踩過的坑”來回答,分 7 個場景

1. 第一次npm run dev

  • Webpack
    公司老項目(約 4 萬行業(yè)務代碼 + Ant Design Pro):

    > webpack serve
    95% emitting CompressionPlugin

    冷啟動 38 s,M1 芯片 + SSD。
    原因:

    • 要解析 2 300 個模塊的依賴圖;
    • ts-loader、babel-loader、eslint-loader 串行排隊;
    • 每次新增文件,圖重新計算。
  • Vite
    同一套代碼遷移到 Vite:

    > vite
    ready in 823 ms

    預構(gòu)建依賴(esbuild 一次性把 lodash-es、antd 等打包成 ESM)只要 200 ms,剩下的模塊按瀏覽器請求懶編譯。

2. 熱更新(HMR)

  • Webpack
    修改一個 Button 組件樣式:

    • 觸發(fā) less-loader → css-loader → MiniCssExtractPlugin;
    • 全量 diff 依賴圖,平均 2.8 s 瀏覽器才刷出來。
      如果改的是公共 util,時間飆到 6 s+。
  • Vite
    只編譯改動的那 1 個 .vue 文件,esbuild 把 <style> 內(nèi)聯(lián)成 ESM,200 ms 內(nèi)瀏覽器收到更新。
    實測:React 項目 300+ 路由頁,HMR 穩(wěn)定在 300 ms 內(nèi)。

3. 配置地獄

  • Webpack
    為了兼容 IE11,我們寫了 160 行的 webpack.config.js

    module.exports = {
      entry: { main: ['core-js/stable', 'regenerator-runtime/runtime', './src/index.tsx'] },
      output: { publicPath: process.env.ASSET_PATH || '/' },
      module: {
        rules: [
          { test: /\.tsx?$/, use: ['babel-loader', 'eslint-loader'] },
          { test: /\.less$/, use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'less-loader'] },
          { test: /\.(png|jpg|jpeg|gif|svg)$/, type: 'asset', parser: { dataUrlCondition: { maxSize: 8192 } } }
        ]
      },
      plugins: [
        new HtmlWebpackPlugin({ template: './public/index.html' }),
        new CompressionPlugin({ algorithm: 'gzip' })
      ],
      optimization: {
        splitChunks: {
          chunks: 'all',
          cacheGroups: {
            vendor: { test: /[\\/]node_modules[\\/]/, name: 'vendors', priority: 10 }
          }
        }
      }
    };

    新人 2 天才能跑起來。

  • Vite

    export default defineConfig({
      plugins: [react()],
      server: { port: 3000 },
      build: { outDir: 'dist' }
    });

    30 秒上手,剩下交給官方插件。

4. 生產(chǎn)構(gòu)建

  • Webpack
    npm run build 跑 3 min 10 s,產(chǎn)物 4.2 MB(gzip 后 1.1 MB)。

    • 需要手動配 SplitChunksPlugin、BundleAnalyzerPlugin 做體積優(yōu)化;
    • 多入口時要做 runtimeChunk: 'single',否則重復 polyfill 爆炸。
  • Vite
    同一套代碼,Rollup 構(gòu)建 38 s,產(chǎn)物 3.8 MB(gzip 后 0.9 MB)。

    • 默認 tree-shaking 更激進,Ant Design 的未使用組件直接消失;
    • 動態(tài) import 自動拆包,無需手寫魔法注釋。

5. 兼容性

  • Webpack
    能無痛打到 ES5,IE11 白屏率 < 1%。
    代價:polyfill + 降級語法,打包體積 +25%。

  • Vite
    開發(fā)階段默認只支持現(xiàn)代瀏覽器(ES2020+)。
    需要 IE11 時:

    • @vitejs/plugin-legacy;
    • 會自動生成 legacy bundle + polyfill,構(gòu)建時間 + 40%,但 DX 仍比 Webpack 快。

6. 微前端/Module Federation

  • Webpack 5
    我們主應用用 ModuleFederationPlugin 動態(tài)加載子應用:
    new ModuleFederationPlugin({
      name: 'host',
      remotes: {
        marketing: 'marketing@http://localhost:3001/remoteEntry.js'
      }
    })
    子應用獨立部署,共享 React、antd,節(jié)省 300 KB 流量。
    Vite 目前社區(qū)有 vite-plugin-federation,但功能、穩(wěn)定性還沒對齊 Webpack,復雜場景慎入。

7. 遷移成本

  • Webpack → Vite
    我們 3 人 2 周把 70% 的子項目遷完:
    • webpack-dev-server 代理配置抄到 vite.config.ts;
    • file-loader/url-loader 換成 import.meta.glob
    • 遇到 CommonJS 老庫(如 moment)加 optimizeDeps.include 強制預構(gòu)建。
      遺留的 30%(Module Federation 子應用、低版本瀏覽器)繼續(xù)留在 Webpack。

一句話總結(jié)

  • 新項目、小團隊、追求開發(fā)效率 → 直接上 Vite。
  • 要 IE11、Module Federation、超大型 monorepo → 繼續(xù) Webpack,或兩者并存:主應用 Webpack,子應用 Vite。

到此這篇關(guān)于Webpack和Vite有哪些區(qū)別的文章就介紹到這了,更多相關(guān)Webpack和Vite區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于JavaScript實現(xiàn)HTML到PDF的轉(zhuǎn)換指南

    基于JavaScript實現(xiàn)HTML到PDF的轉(zhuǎn)換指南

    HTML到PDF的轉(zhuǎn)換是一個實用的功能,特別是在需要網(wǎng)頁打印或文檔共享時,本文將深入探討如何在JavaScript環(huán)境中使用 jspdf 庫來實現(xiàn)這一轉(zhuǎn)換,感興趣的小伙伴跟著小編一起來看看吧
    2025-07-07
  • javascript dom操作之cloneNode文本節(jié)點克隆使用技巧

    javascript dom操作之cloneNode文本節(jié)點克隆使用技巧

    文本克隆函數(shù)cloneNode他有兩個參數(shù)——true or false
    2009-12-12
  • 淺談es6中的元編程

    淺談es6中的元編程

    這篇文章主要介紹了淺談es6中的元編程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • js前端技巧之圖片格式轉(zhuǎn)換(File、Blob、base64)

    js前端技巧之圖片格式轉(zhuǎn)換(File、Blob、base64)

    這篇文章主要給大家介紹了關(guān)于js前端技巧之圖片格式轉(zhuǎn)換(File、Blob、base64)的相關(guān)資料,主要記錄一下比較常見的圖片格式(File、Blob、base64)在不同的場景他們之間的相互轉(zhuǎn)換的方法,需要的朋友可以參考下
    2023-04-04
  • JS實現(xiàn)可縮放、拖動、關(guān)閉和最小化的浮動窗口完整實例

    JS實現(xiàn)可縮放、拖動、關(guān)閉和最小化的浮動窗口完整實例

    這篇文章主要介紹了JS實現(xiàn)可縮放、拖動、關(guān)閉和最小化的浮動窗口的方法,實例分析了javascript操作窗口層的技巧,需要的朋友可以參考下
    2015-03-03
  • 自定義排序算法在JavaScript中的應用

    自定義排序算法在JavaScript中的應用

    這篇文章主要介紹了自定義排序算法在JavaScript中的應用,通過自定義排序函數(shù),我們能夠精確控制數(shù)組元素的排序邏輯,從而滿足各種復雜的應用場景,需要的朋友可以參考下
    2024-12-12
  • uni-app的iPhonex底部安全區(qū)域解決方案

    uni-app的iPhonex底部安全區(qū)域解決方案

    這篇文章主要為大家介紹了uni-app的iPhonex底部安全區(qū)域解決方案示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • JS算法題之查找數(shù)字在數(shù)組中的索引位置

    JS算法題之查找數(shù)字在數(shù)組中的索引位置

    這篇文章主要給大家介紹了關(guān)于JS算法題之查找數(shù)字在數(shù)組中的索引位置的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JS具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • JavaScript空值合并運算符??使用場景

    JavaScript空值合并運算符??使用場景

    這篇文章主要介紹了JavaScript空值合并運算符??的相關(guān)資料,??是一個js邏輯操作符,當左側(cè)的操作數(shù)為null或者undefined時,返回其右側(cè)數(shù),否則返回左側(cè)數(shù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-09-09
  • 一個不錯的js html頁面倒計時可精確到秒

    一個不錯的js html頁面倒計時可精確到秒

    這篇文章主要介紹了一個不錯的js html頁面倒計時可精確到秒,很簡單,但和實用,需要的朋友可以參考下
    2014-10-10

最新評論

抚远县| 蒙自县| 周口市| 富宁县| 高陵县| 台前县| 报价| 封丘县| 革吉县| 固始县| 洪洞县| 庆云县| 瑞丽市| 营口市| 长汀县| 乐都县| 天津市| 牡丹江市| 丰宁| 高淳县| 偏关县| 平谷区| 晋江市| 社旗县| 襄汾县| 雷山县| 昭觉县| 荣成市| 山东| 丹寨县| 富裕县| 淳化县| 邵阳县| 河北区| 屏南县| 嘉义县| 桓仁| 会宁县| 平远县| 丰镇市| 和平县|