这是我参与「第四届青训营 」笔记创作活动的第10天。
构建工具
-
模块化
ESM,CommonJS,UMD
提供模块加载方案,兼容不同模块规范
- 资源编译
高级语法转译,如Scss,TypeScript
资源加载,如图片,字体
-
产物质量
代码体积,代码性能
产物压缩,无用代码删除,语法降级
-
开发效率
热更新
Vite概要介绍
定位:新一代前端构建工具
两大组成部分:
- No-bundle 开发服务,源文件无需打包
- 生产环境基于 Rollup 的 Bundler
核心特征:
- 高性能,dev 启动速度和热更新速度非常快
- 简单易用,开发者体验好
基于原生 ESM 的开发服务优势
- 无需打包项目源代码
- 天然的按需加载
- 可以利用文件级的浏览器缓存
基于 Esbuild 的编译性能优化
性能高,在 Vite 中被深度使用
内置的 Web 构建能力
Vite上手实战
npm create vite //初始化命令
npm install //安装依赖
npm run dev //启动项目
使用 Scss & CSS Modules
使用静态资源
除了常见是图片格式,Vite也内置了对 JSON、worker资源的加载支持
使用HMR
默认自动开启
生产环境 Tree Shaking
默认自动开启
优化原理:
- 基于 ESM 的 import/export 语句依赖关系,与运行时状态无关
- 在构建阶段将未使用的代码进行删除
Vite整体架构
依赖预打包
- 避免 node_modules 过多的文件请求
- 将CommonJs 格式转为 ESM 格式
实现原理
- 服务启动前扫描代码中用到的依赖
- 用 Esbuild 对依赖进行预打包
- 改写 import 语句,指定依赖为预构建产物路径
单文件编译
用 Esbuild 编译 TS/JSX
优势: 编译速度提升
代码压缩
插件机制
开发阶段 —— 模拟 Rollup 插件机制 生产阶段 —— 直接使用 Rollup
Vite进阶路线
了解基本使用(常用的配置) —— 前端性能优化、学习插件开发 —— 阅读源码,理解核心技术原理