外观
Vite
Vite 是下一代前端构建工具,由 Vue.js 创始人尤雨溪于 2019 年开发,旨在解决传统 JavaScript 工具在大型项目中面临的启动缓慢和热更新延迟等性能瓶颈。其名称源于法语单词“Vite”,意为“快速”,精准体现了工具的核心优势。
核心概念
传统打包器的问题
基于打包器的构建工具在开发服务器启动前必须优先抓取并构建整个应用。
传统工具 (Webpack等):
[源码] -> [打包器整体打包] -> [捆绑构建] -> [启动服务器]
↓
速度随项目增大而显著变慢Vite 的解决方案
Vite 利用浏览器原生 ES 模块系统,采用按需编译模式。
Vite 工作流程:
[浏览器请求] -> [Vite 服务器拦截] -> [按需编译模块] -> [返回ES模块]
↓
无需预先打包,极速启动架构设计
开发环境与生产环境分离
Vite 在开发和生产阶段采用不同的构建策略,充分发挥各自优势。
开发环境:
[原生ESM] -> [按需编译] -> [快速HMR]
↓
基于ESBuild,速度极快
生产环境:
[Rollup打包] -> [代码分割] -> [优化输出]
↓
成熟的打包优化依赖预构建
Vite 通过依赖预构建优化第三方模块的加载性能。
依赖处理流程:
[检测依赖] -> [Esbuild预构建] -> [单模块合并] -> [缓存优化]
↓
减少网络请求,提升加载速度性能优势
服务器启动速度
Vite 的冷启动速度比传统打包器快数十倍,尤其在大项目中差异更明显。
启动时间对比:
小型项目: Webpack(3s) vs Vite(0.5s)
大型项目: Webpack(90s) vs Vite(3s)热模块更新
Vite 提供精确的 HMR,保持应用状态的同时快速更新变化模块。
HMR 过程:
[文件修改] -> [精确影响分析] -> [模块更新] -> [状态保持]
↓
更新速度与项目规模无关功能特性
开箱即用支持
Vite 对现代前端开发中的常用技术提供原生支持。
内置支持:
- TypeScript
- JSX/TSX
- CSS 预处理器 (Sass, Less)
- PostCSS
- WebAssembly
- 等等插件系统
Vite 扩展了 Rollup 插件接口,提供高度可扩展性。
插件生态:
[Rollup兼容插件] -> [Vite专属插件] -> [框架特定插件]
↓
丰富的功能扩展使用方式
快速创建项目
使用 Vite 脚手架快速启动新项目。
命令示例:
npm create vite@latest
pnpm create vite
yarn create vite
项目模板:
vanilla, vanilla-ts, vue, vue-ts, react, react-ts, preact, preact-ts, lit, lit-ts, svelte, svelte-ts开发命令
Vite 提供简洁的开发工作流。
开发流程:
vite dev # 启动开发服务器
vite build # 生产构建
vite preview # 预览生产构建技术原理
基于 ESM 的开发服务器
Vite 开发服务器的核心原理是利用浏览器原生模块系统。
浏览器模块加载:
index.html -> [script type="module"] -> 导入 -> `/src/main.js` -> 编译转换 -> 返回ESM
↓
浏览器解析依赖,发送模块请求按需编译
Vite 只在浏览器请求模块时才进行编译转换,避免不必要的构建工作。
请求处理:
浏览器请求 `/src/App.vue` -> Vite拦截 -> 编译SFC -> 返回JavaScript
↓
仅编译被请求的模块生态系统
框架支持
Vite 与主流前端框架深度集成,成为许多元框架的构建基础。
框架集成:
- Vue (官方推荐)
- React (Create React App替代方案)
- Svelte
- SolidJS
- Lit
- 以及 Nuxt, SvelteKit, Astro 等元框架插件生态
丰富的插件生态系统覆盖各种开发需求。
常用插件:
- @vitejs/plugin-vue Vue支持
- @vitejs/plugin-react React支持
- @vitejs/plugin-legacy 浏览器兼容
- vite-plugin-pwa PWA支持
- 等等配置示例
基础配置
Vite 通过 vite.config.js 文件进行配置,支持 TypeScript 类型提示。
javascript
// vite.config.js
export default {
server: {
port: 5173, // 默认端口
host: true
},
build: {
outDir: 'dist',
sourcemap: true
},
plugins: [
// 插件配置
]
}适用场景
理想使用场景
Vite 在以下场景中表现尤为出色:
推荐场景:
- 现代浏览器项目
- 大型单页应用
- 组件库开发
- 原型快速开发
- 教学演示项目注意事项
在某些场景下可能需要考虑兼容性方案。
注意事项:
- 传统浏览器支持需要插件
- 某些旧依赖可能需要额外配置
- 生产环境与开发环境差异处理