青训营学习记录笔记
Vite知识体系
01 Vite基本概要
1.1 浅谈构建工具
-
为什么需要构建工具
前端工程的痛点:
-
模块化
尽管React等框架已经将模块化应用很成熟,但前端的模块化标准仍需完善。
-
资源编译
对于高级语法,浏览器需要进行编译的过程。
-
产物质量
线上代码需要压缩,代码体积一般需要优化,以及代码需要一定的兼容性。
-
开发效率
如果没有构建工具,在开发中很难实时观测开发进程与页面效果,进而开发效率低下。
-
-
前端构建工具的意义
- 模块化方案:
- 提供模板加载方案
- 兼容不同模板规范
- 语法转译
- 高级语法转译
- 资源加载
- 产物质量:产物压缩、无用代码删除、语法降级
- 开发效率:热更新
- 模块化方案:
1.2 Vite概要介绍
Vite的定位为新一代前端构建工具,其核心特征为:
- 高性能,dev启动速度和热更新速度非常快
- 简单易用,开发体验好
Vite Dev Server的优势:
- 无需打包项目源代码
- 天然的按需加载
- 可以利用文件级的浏览器缓存。
Vite开箱即用的功能等价于:
- webpack
- webpack-dev-server
- css-loader
- style-loader
- sass-loader
- ......
1.3 Vite上手实战
- Vite项目初始化:
# 提前安装 pnpm
npm i -g pnpm
# 初始化命令
pnpm create vite
# 安装所需依赖
pnpm install
# 启动项目
pnpm run dev
-
执行命令安装Sass,CSS的module:
pnpm i scss -D -
建立Vite + React的框架
-
在工程目录下新建组件
index.jsx:export function Header(){ return <div className={styles.header}>Header</div> } -
并新建sass文件:
index.module.scss:.header { color:red }使用CSS Modules 模块化方案,防止className 命名冲突
-
除了常见的图片格式外,Vite也内置了对于JSON、Worker、WASM资源的加载支持。
-
生产环境 Tree Shaking
优化原理:
1、基于ESM的
import/export语句依赖关系,与运行时状态无关2、在构建阶段将未使用到的代码进行删除
-
进行生产环境打包,执行:
pnpm run build,然后可查看Vite编译后的代码文件。 -
CommonJS 格式不能做到Tree Shaking。
-
Esbuild作为默认压缩工具,替代传统的Terser、Uglify.js等压缩工具。
1.4 Vite进阶路线
- 推荐学习顺序(esbuild、rollup.js):
- 了解基本使用,动手尝试各项常用配置
- 然后学习其插件开发
- JS编译工具(Babel)出现的原因:
- JavaScript语法标准繁多,浏览器支持程度不一
- 开发者需要用到高级语法
总结
Vite是一个轻量级的构建工具,旨在提供快速的开发体验。它利用了ES模块的特性,通过直接在浏览器中运行原始的开发代码,而不是像传统的构建工具(如Webpack)那样先将代码打包合并。这种方式可以实现快速的冷启动和热模块替换,从而提高开发效率。