Vite知识体系 | 青训营笔记

65 阅读2分钟

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

前端构建工具的意义

模块化方案

提供模块加载方案,兼容不同模块规范

语法转译

高级语法转义,如Sass,Typescript

产物质量

产物压缩,无用代码删除,语法降级

开发效率

热更新

Vite概览

在浏览器支持 ES 模块之前,JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。这也正是我们对 “打包” 这个概念熟悉的原因:使用工具抓取、处理并将我们的源码模块串联成可以在浏览器中运行的文件。

Vite(法语意为 "快速的",发音 /vit/,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。 它主要由两部分组成:

Vite上手使用

对于开发者,任何时候都推荐查阅官方文档来获取工具的最新使用方式。

安装

# npm
npm create vite@latest

# yarn
yarn create vite

#pnpm
pnpm create vite

新建项目

# npm 6.x
npm create vite@latest my-vue-app --template vue

# npm 7+, extra double-dash is needed:
npm create vite@latest my-vue-app -- --template vue

# yarn
yarn create vite my-vue-app --template vue

# pnpm
pnpm create vite my-vue-app --template vue

其他模板,例如ts支持可以在官方文档找到

Vite整体架构

依赖项预打包

实现原理

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

单文件编译

用Esbuild编译TS/JSX

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

代码压缩

Esbuild作为默认压缩工具

插件机制

开发阶段:模拟Rollup插件机制 生产阶段:直接使用Rollup

进阶主题

插件开发

1.png 通过上述Hook,我们可以在不同的构建阶段插入自定义逻辑

语法安全降级

2.png 参考资料 github.com/vitejs/vite…
babeljs.io/docs/en/bab…