简单介绍下各种 JavaScript 解析器 (2)

这是@babel/parser的一个子集,如果你确定的代码不需要兼容IE浏览器,就可以用这个解析器,按照他的介绍,其解析速度目前来说应该是最快的。

2.2 swc (10.1k☆)

创作时间:2017-12-17
作品地址:https://github.com/swc-project/swc
作者:강동윤,他是一个97年的小萌新,目前还在读大二,rust的狂热爱好者,开源了很多rust相关的项目,为此今年8月份Deno官方给了他一份顾问合同。
作者博客:

https://github.com/kdy1

https://kdy1.github.io/

用的rust编写的js编译器,单核比babel快4倍,4核比babel快70倍,也可以用来打包js、ts代码,并且也拥有 tree shaking功能,它的默认的配置文件spack.config.js和webpack.config.js保持一致,@swc/cli故意与@babel/cli想同,看来野心非常大。

它的目标就是替换babel,目前它已经完成了babel的大部分功能,具体可以看对照表[3]

2.3 esbuild (16.5k☆)

创作时间:2020-1-1
作品地址:https://github.com/evanw/esbuild/
作者:Evan Wallace,一直从事webGL方面的相关的开发,目前就职于Figma
个人博客:

https://github.com/evanw

esbuild是用go编写的下一代web打包工具,它拥有目前最快的打包记录和压缩记录,snowpack和vite的也是使用它来做打包工具,为了追求卓越的性能,目前没有将AST进行暴露,也无法修改AST,无法用作解析对应的JavaScript。

目前它的star在所有项目中增长最为迅速。

三。其他一些著名的工具库 3.1 recast (3.4k☆)

创作时间:2012-9-16
作品地址:https://github.com/benjamn/recast
作者:Ben Newman,recast作者,TC39成员,目前居住于纽约布鲁克林地区
个人博客:

https://github.com/benjamn

https://www.quora.com/profile/Ben-Newman

如果你需要重构你的代码,那么这个库将会是你的第一选择,它可以同时使用多种解析器,并且可以自定义传入需要的解析器,是重构利器。

3.2 jscodeshift (5.9k☆)

创作时间:2015-3-22
作品地址:https://github.com/facebook/jscodeshift
作者:Felix Kling。
个人博客:

https://github.com/fkling

https://felix-kling.de/

jscodeshift底层依赖于recast,在其基础上封装了遍历、操作AST的方法,使得更加便,如果你需要直接操作AST来构建新的功能,我觉得这个是最合适的选择。

目前来说fkling已经离开了Facebook,目前这个库的主要维护者已经不是他了

3.2 ASTExplorer (3.6k☆)

创作时间:2014-6-29
作品地址:https://github.com/fkling/astexplorer
作者:Felix Kling

如果你需要对代码进行重构或者进行AST的分析,那么https://astexplorer.net/这个网站应该可以很好的帮助你,它是一个可视化的AST浏览工具,非常棒。

目前还不支持SWC,但是已经有人提了对应的pr,还没有合并

参考文献

1. uglify-js为什么用SpiderMonkey AST

2. RReverser为acorn贡献了大部分es6规范实现

3. swc完成的babel功能对照图

对 Electron 感兴趣?请关注我们的开源项目 Electron Playground,带你极速上手 Electron。

我们每周五会精选一些有意思的文章和消息和大家分享,来掘金关注我们的 晓前端周刊。

我们是好未来 · 晓黑板前端技术团队。
我们会经常与大家分享最新最酷的行业技术知识。
欢迎来 知乎、掘金、Segmentfault、CSDN、简书、开源中国、博客园 关注我们。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppwjz.html