Vite知识体系 | 青训营笔记

62 阅读3分钟

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

一、本堂课重点内容:

  • 浅谈构建工具
  • Vite概要介绍
  • Vite上手实战
  • Vite整体架构
  • Vite进阶路线

二、详细知识点介绍:

浅谈构建工具

image.png

Vite概要介绍

Vite概览

  • 定位:新一代前端构建工具
  • 两大组成部分:1.No-bundle开发服务,源文件无需打包;2.生产环境基于Rollup的Bundler
  • 核心特征:1.高性能,dev启动速度和热更新速度非常快;2.简单易用,开发者体验好

image.png

image.png

当前两大行业趋势:

  • 全球浏览器对原生ESM的普遍支持(目前占比92%以上)
    • 两大要素:
      • 1.script标签增加type="module"属性
      • 使用ESM模块导入导出语法
  • 基于原生语言(Go、Rust)编写前端编译工具链,如Go语言编写的Esbuild、Rust编写的SWC

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

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

基于Esbuild的编译性能优化:

Esbuild——基于Golang开发的前端工具,具备如下能力:

  1. 打包器 Bundler
  2. 编译器 Transformer
  3. 压缩器 Minifier

image.png

Vite进阶路线

深入双引擎

esbuild

rollup.js

推荐学习顺序:

  • 先了解基本使用,动手尝试各项常用配置
  • 然后学习其插件开发
Vite插件开发

为什么需要插件机制?

  • 抽离核心逻辑
  • 易于拓展

image.png

复杂度较低的插件:json加载插件

复杂度中等的插件:Esbuild接入插件

复杂度较高的插件:官方React插件

代码分割(拆包)

image.png

JS编译工具(Babel)

出现的原因:

  • JavaScript语法标准繁多,浏览器支持程度不一
  • 开发者需要用到高级语法

image.png

语法安全降级

image.png

image.png

服务端渲染(SSR)

一种常见的渲染模式,用于提升首屏性能和SEO优化

image.png

深入了解底层标准

image.png

Vite社区生态

Github 40k+ star(可参考webpack 61.3K,rollup 21.8 k),并且目前还在持续维护

官方提供插件:

@vitejs/plugin-vue,提供Vue3支持 @vitejs/plugin-vue-jsx,提供Vue3 JSX支持 @vitejs/plugin-react,提供React支持 @vitejs/plugin-legacy,提供低版本浏览器降级支持

image.png

三、实践练习例子:

Vite上手实战

image.png

image.png

image.png 关于HMR:无需额外配置,自动开启

生产环境 Tree Shaking

优化原理:

  1. 基于ESM的import/export语句依赖关系,与运行时状态无关
  2. 在构建阶段将未使用到的代码删除
  3. Tree Shaking在Vite中无需配置,默认开启

关键技术:单文件编译

用Esbuild编译TS/JSX

优势:编译速度提升10-100x 局限性:不支持类型检查,不支持语法降级到ES5

关键技术:代码压缩

image.png

image.png

image.png

四、课后个人总结:

  • 这堂课学习到了Vite这个构建工具,了解了它出现的原因和未来的前景,扩展了自己的知识体系。
  • 在前端这个发展飞速的领域,只有不断地学习才能不被拉下。