Vite 学习笔记
适合目标:系统掌握 Vite 的开发模式、插件能力、生产构建、优化策略与选型判断。
学习定位:这一份偏“现代项目默认选择 + 开发体验 + 原理解释”。
学习原则:先理解 Vite 为什么快,再理解它如何兼顾开发体验和生产构建。
目录
- Vite 是什么
- 为什么 Vite 这么流行
- Vite 为什么快
- 开发阶段与生产阶段
- 配置、插件与生态
- 常见使用方式
- 进阶优化
- 常见问题
- 高频面试题
- 一页总结
1. Vite 是什么
Vite 官方把它定义为:
面向现代 Web 项目的更快、更精简的开发体验构建工具。
它由两大部分组成:
- 开发服务器
- 生产构建命令
截至 2026 年 4 月 17 日我查阅到的官方文档,Vite 官方文档已经写明:
build command bundles your code with Rolldown
这意味着:
- Vite 仍然是应用构建工具
- 它背后的底层生产构建能力正在进入 Rolldown 时代
2. 为什么 Vite 这么流行
2.1 它击中了前端最痛的地方
npm run dev启动慢- 页面一改就要等很久
- 配置太重
- 新项目不想从零配 webpack
2.2 它提供了很好的默认体验
- 启动快
- HMR 快
- 模板齐全
- 配置量相对少
- Vue / React / TS / CSS 体验顺滑
3. Vite 为什么快
这部分是面试核心。
3.1 开发阶段不先全量打包
Vite 的核心思想之一是:
开发环境下尽量避免像传统 bundler 那样先全量构建整个项目。
3.2 基于原生 ESM 按需提供模块
浏览器请求哪个模块,就提供哪个模块。
这样启动时不需要先把全项目打成一个大 bundle。
3.3 依赖预构建
第三方依赖通常体积大、模块格式杂。
Vite 会对它们做预处理,提高开发时加载性能与兼容性。
3.4 HMR 粒度更细
改一个模块,只让受影响模块热更新,不做整包重编译。
3.5 面试答法
如果问“Vite 为什么快”,建议这样回答:
Vite 在开发阶段基于原生 ESM 按需提供模块,不需要像传统 bundler 一样先全量打包整个应用;同时通过依赖预构建和更细粒度的 HMR,大幅提升启动速度和更新速度。
4. 开发阶段与生产阶段
4.1 开发阶段
重点:
- Dev Server
- 原生 ESM
- HMR
- 依赖预构建
4.2 生产阶段
重点:
- chunk 划分
- tree shaking
- 压缩
- 静态资源输出
4.3 为什么 Vite 不是“只有开发快”
很多人只记得 Vite 开发快,但忽略了它生产构建也需要严肃优化。
所以你要把它理解成:
开发阶段和生产阶段采用不同策略的现代构建工具。
5. 配置、插件与生态
5.1 基本配置
常见配置文件:
vite.config.tsvite.config.js
常见配置项:
serverresolvebuildpluginsdefine
5.2 插件体系
Vite 的插件系统很重要。
它的生态经验很大一部分来自 Rollup / Vite 的插件体系兼容思路。
你要理解:
- 为什么插件可复用
- 为什么框架能力常以插件形式接入
- 插件在开发和构建阶段都可能介入
5.3 常见官方插件
- Vue 插件
- React 插件
- legacy 插件
6. 常见使用方式
6.1 Vue 新项目
这是最自然的默认组合之一。
6.2 React 新项目
也是非常常见的选择。
6.3 组件库开发
可以使用 Vite 的 library mode,但你仍然要理解 Rollup / Rolldown 的产物控制思路。
6.4 SSR / SSG 工具链
很多现代工具都建立在 Vite 生态上,比如:
- Astro
- Nuxt 的相关现代构建思路
- 各类开发工具
7. 进阶优化
7.1 大项目优化
- 合理拆分依赖
- 控制别名和路径解析
- 合理使用
manualChunks - 监控第三方包体积
7.2 生产构建优化
- 代码分割
- 按路由懒加载
- 公共包抽离
- 图片和字体资源优化
7.3 调试与兼容
- source map 策略
- legacy 浏览器兼容
- 环境变量与模式区分
8. 常见问题
8.1 为什么某些老项目迁移到 Vite 不顺
因为老项目可能强依赖:
- Webpack loader
- Webpack plugin
- 特定模块解析行为
- 自定义构建链路
8.2 为什么依赖偶尔会预构建异常
通常与:
- 包导出格式
- CJS / ESM 混用
- 缓存
- 锁文件变更
有关。
8.3 Vite 能不能完全替代 Webpack
不能一概而论。
大多数新项目可以,但超复杂遗留系统要具体评估。
9. 高频面试题
9.1 Vite 为什么快
核心答法:
- 原生 ESM
- 按需提供模块
- 依赖预构建
- 细粒度 HMR
9.2 Vite 和 Webpack 的区别
答题主线:
- 开发阶段策略不同
- 配置复杂度不同
- 生态历史不同
- 默认体验不同
9.3 Vite 生产构建还重要吗
当然重要。
开发快不代表生产包天然最优,仍然要考虑分包、缓存、压缩和兼容。
9.4 什么时候不一定优先 Vite
- 超复杂遗留 webpack 工程
- 强依赖 webpack 插件生态
- 企业需要更偏 Rspack 兼容路线
10. 一页总结
10.1 Vite 的定位
现代前端项目的默认优先选择之一。
10.2 记忆口诀
开发阶段按需供模块,生产阶段认真做打包。