这是我参与「第五届青训营 」笔记创作活动的第11天
Vite给我的直观印象:相应迅速,开箱即用
Vite整体架构
关键技术:依赖预打包
为什么要进行预打包?
- 避免node_modules过多的文件请求
-
- 将CommonJS格式转换为ESM格式
- 将CommonJS格式转换为ESM格式
实现原理:
- 服务启动前扫描代码中用到的依赖
- 用Esbuild对依赖代码进行预打包
- 改写import语句,指定依赖为预构建产物路径
关键技术:单文件编译
用Esbuild编译TS/JSX
优势:编译速度提升10-100 x
局限性
- 不支持类型检查
- 不支持语法降级到ES5
关键技术:代码压缩
Esbuild 作为默认压缩工具,替换传统的Terser、Uglify.js等压缩工具
关键技术:插件机制
- 开发阶段->模拟 Rollup 插件机制
- 生产环境->直接使用Rollup
插件兼容性具体可查阅vite-rollup-plugins.patak.dev/
Vite进阶路线
深入双引擎
参考资料:
Vite插件开发
为什么需要插件机制?
- 抽离核心逻辑
- 利于扩展
图解
通过上述的Hook,我们可以在不同的构建阶段插入自定义的逻辑
参考资料:
- Vite插件开发文档
- 复杂度较低的插件:json加载插件
- 复杂度中等的插件:Esbuild接入插件
- 复杂度较高的插件:官方react插件