Vite vs Webpack

1. 面试题

Q: 如果让你做项目选型,Vite 和 Webpack 有什么核心区别?

2. 核心解答

两者都是前端构建工具,但设计理念截然不同。

(1) Webpack

定位:大一统的 Bundler (Modular Bundler)。

  • 核心:一切皆模块 (Import Everything)。
  • 优势
    • 生态级:插件极其丰富 (Loader/Plugin),几乎能处理所有非标文件。
    • 产物优化:Code Splitting, Tree Shaking 极其成熟,适合大型复杂项目。
    • 兼容性:支持 ie9+。
  • 劣势 (Bundled)。全量打包导致冷启动慢,热更新随着项目变大越来越慢。配置极其繁琐。

(2) Vite

定位:下一代前端开发与构建工具 (Build Tooling)。

  • 核心:开发环境 Bundleless (ESM),生产环境 Rollup (Bundle)。
  • 优势
    • (Unbundled Dev Server, Esbuild)。秒级冷启动。
    • 如丝般顺滑的 HMR:与项目大小解耦。
    • 开箱即用:支持 TS, JSX, CSS Preprocessor, PostCSS,无需配置。
  • 劣势
    • 生态:插件虽然兼容 Rollup,但针对特定 Loader 的场景不如 Webpack 丰富。
    • SSR:虽然原生支持 SSR,但依然比较复杂。
    • Browser Support:必须支持 Native ESM (Modern Browser)。需 Polyfill 才能兼容旧浏览器 (@vitejs/plugin-legacy)。

3. 选型建议

  • 新项目 (React/Vue): Vite。开发体验无敌。
  • 大型存量项目 (Monorepo): Webpack (基于 pnpm workspace)。迁移成本太高。
  • 需兼容 IE11: Webpack
  • SSR 复杂应用: Vite SSR 正在崛起 (Nuxt 3, Astro)。

4. 总结

  • Webpack: Mature, Ecosystem, Configurable, Slow Dev.
  • Vite: Modern, ESM, Fast Dev, Simple.