ESbuild
- Vite,snowpack使用了esbuild
Vite和snowpack底层都是用了esbuild。从Vite 的README上可以发现esbuild的执行速度非常快,typescript转义成javascript要比官方的tsc快20-30倍
ESbuild为什么这么快?
- js是单线程串行,esbuild是新开一个进程,然后多线程并行,充分发挥多核优势
- go是纯机器码,肯定要比JIT快
- 不使用 AST,优化了构建流程
ESbuild用来干嘛? 【功能、作用】
-
利用 esbuild 编译代码
- esbuild 提供了 writeFileSync/writeFile 对 code 进行编译
-
利用 esbuild 压缩代码体积
- esbuild 提供了一个 minify 配置允许用户去压缩代码体积
-
利用 esbuild 处理 jsx 代码
-
处理其他资源 【esbuild内置了一些文件处理的loader】
ESbuild 的缺点
- ESbuild不使用AST(抽象语法树)因此带来的一些缺点
babel的插件是通过AST来完成的,而esbuild没有使用ast,所以项目使用babel插件的话,是没有很好的迁移方案
为了保证 esbuild 的编译效率,esbuild 没有提供 AST 的操作能力。所以一些通过 AST 处理代码的 babel-plugin 没有很好的方法过渡到 esbuild 中(说的就是你 babel-plugin-import),如果你的项目使用了 babel-plugin-import, 或者一些自定义的 babel-plugin 。在目前来看是没有很好的迁移方案的