这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天
Vite框架的关键技术
单文件编译
loadModule是不可控的,可能中间夹杂很多其他的文件请求,导致文件请求数量相当大;同时,它的文件格式也是不规范的。对此,vite对依赖使用esbuild进行预打包,同时还会改写对应的文件路径为预打包的文件路径,依赖的编译也是使用esbuild进行快速编译
但是esbuild不支持类型检查(使用tsc进行检查),同时不支持语法降级,可能会导致不能兼容低版本浏览器的问题
代码压缩
代码压缩其实是非常耗时的事情,esbuild作为默认压缩工具替换传统的压缩工具,能够明显提高压缩速度(2-30倍)
插件机制
开发阶段模拟Rollup插件机制,生产环境直接使用Rollup,但不是所有的插件都能够兼容Vite
后续学习路线
vite非常依赖esbuild和rollup,并且官方文档很有参考性。先了解基本使用,动手尝试各项常用配置之后,再学习插件开发
Vite的插件开发使用一系列的hook函数
代码分割(拆包)
如果拆包了,改动其中一个文件并不会导致整个bundle失效,这个部分十分依赖rollup的开发功能
JS编译工具(Babel)
解析代码为抽象语法树(AST),然后将高级语法转换为低级语法,再生成Code
babel插件的开发(babel插件开发手册)
语法安全降级
比如IE11不支持promise的语法
服务端渲染(SSR)
底层标准
ESM正在走向大一统,ESM规范很重要,同时社区也正在演进pureESM