Vite_2|青训营

60 阅读2分钟

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

Vite框架的关键技术

单文件编译

loadModule是不可控的,可能中间夹杂很多其他的文件请求,导致文件请求数量相当大;同时,它的文件格式也是不规范的。对此,vite对依赖使用esbuild进行预打包,同时还会改写对应的文件路径为预打包的文件路径,依赖的编译也是使用esbuild进行快速编译
但是esbuild不支持类型检查(使用tsc进行检查),同时不支持语法降级,可能会导致不能兼容低版本浏览器的问题

代码压缩

代码压缩其实是非常耗时的事情,esbuild作为默认压缩工具替换传统的压缩工具,能够明显提高压缩速度(2-30倍)

插件机制

开发阶段模拟Rollup插件机制,生产环境直接使用Rollup,但不是所有的插件都能够兼容Vite

后续学习路线

vite非常依赖esbuild和rollup,并且官方文档很有参考性。先了解基本使用,动手尝试各项常用配置之后,再学习插件开发 Vite的插件开发使用一系列的hook函数 image.png

代码分割(拆包)

如果拆包了,改动其中一个文件并不会导致整个bundle失效,这个部分十分依赖rollup的开发功能 image.png

JS编译工具(Babel)

解析代码为抽象语法树(AST),然后将高级语法转换为低级语法,再生成Code image.png

babel插件的开发(babel插件开发手册)

语法安全降级

比如IE11不支持promise的语法

image.png

服务端渲染(SSR)

image.png

底层标准

ESM正在走向大一统,ESM规范很重要,同时社区也正在演进pureESM image.png