前端入门:快速了解Vite|青训营笔记

88 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第20天

一、浅谈构建工具

模块化方案:提供模块加载方案、兼容不同模块规范

资源编译:高级语法的编译

产物质量:代码体积和性能

开发效率:更新热

当下问题:

  • 缓慢启动:项目编译等待成本高
  • 缓慢的热更新:修改代码后不能实时更新
  • bundle带来的性能开销
  • javascript语言的性能瓶颈

二、Vite概要介绍

定位:新一代前端构建工具

两大组成部分:源文件无需打包,生产环境基于Rollup 的Bundler

核心特征:性能高,dev启动速度和更新速度非常快,简单易用,开发者体验好

基于原生ESM的开发服务优势:

  • 无需打包项目源代码
  • 天然的按需加载
  • 可以利用文件级的浏览器缓存

基于Esbuild的编译性能优化

  • 打包器 Bundler
  • 编译器 Transformer
  • 压缩器 Minifier

内置的web构建能力

三、Vite 上手实战

项目初始化

  1. 提前安装
  2. 初始化命令
  3. 安装依赖
  4. 启动项目
npm i -g pnp
pnpm create vite
pnpm install
npm run dev
  • 使用Sass/Scss&CSS Modules
  • 安装Sass
pnpm i sass -D
  • 使用HMR,无需额外配置,自动开启
  • Tree Shaking 再Vite中无需配置,默认开启

优化原理

  • 基于ESM的import 语句依赖关系,与运行时状态无关
  • 在构建阶段将未使用到的代码进行删除

四、Vite 整体架构

为什么要预打包

  • 避免node_modules过多的文件请求
  • 将CommonJS格式转换为ESM格式

实现原理

  • 服务启动前扫描代码中用到的依赖
  • 用Esbuild对依赖代码进行预打包
  • 改写import语句,指定依赖为预构建产物路径

五、Vite 进阶路线

先熟悉其基本使用,动手尝试各项常用配置

Vite插件开发

  • 服务启动阶段
  • 请求响应阶段
  • 热更新阶段
  • 服务关闭阶段