AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

Sucrase:一款比 Babel 更快的现代 JS 编译器

  • 2019-07-02
  • 本文字数:1372 字

    阅读完需:约 5 分钟

Sucrase:一款比 Babel 更快的现代 JS 编译器

Sucrase是一款 JavaScript/TypeScript 编译器,目标是提供比标准Babel编译器更快的构建速度。更快的构建意味着更快的迭代,特别是在大型代码基上进行测试的时候。一些测量结果显示,与 Babel 相比,Sucrase 速度提高了 4 至 20 倍。开发人员可以在开发过程中享受这种改进的开发者体验,同时仍然可以在生产环境中使用 Babel。


Sucrase 将自己描述为一个为提升构建速度而推出的“超高速 Babel 替代方案”。在某些限制性的假设前提下,Sucrase 可能比 Babel 提供了显著的速度优势。开发人员可以在Sucrase网站上提供 TypeScript 代码,并通过观察 Sucrase 和 Babel 编译器的结果来评估的 Sucrase 在速度方面的提升。一个默认的示例使用了 20 行代码,速度提升在 4 倍到 7 倍之间变化。Sucrase 在 GitHub 项目主页上提供了一个带有 661K 行代码的大型 TypeScript 代码库示例,其编译速度是 Babel 的 20 倍:



这些速度提升是通过缩减编译器目标范围和牺牲可维护性来实现的。Sucrase 对目标范围缩减的解释如下:


Sucrase 并没有编译大量兼容 Internet Explorer 的 JS 特性,而是假设你正在使用最新的浏览器或 Node.js 版本进行开发,因此它主要编译非标准语言扩展:JSX、TypeScript 和 Flow。


Sucrase 不支持 Node 6 或 Internet Explorer,并且声称只能勉强支持CommonJS和遗留的 TypeScript 和 Babel 5 模块互操作性。由于新的浏览器原生支持大量 JavaScript 语言新特性,并且假设这些特性会被用在开发和测试上下文中,所以 Sucrase 编译器可以专注于更小范围的一组语言特性。除了前面提到的 JSX、TypeScript 和 Flow 之外,它还考虑了其他一些 JavaScript 特性:



还包括特定的转换,用于处理 ES 模块(导入/导出)和使用 React(react-hot-loader)进行开发。上面没有提到的任何 JavaScript 语法都将按原样进行“传递”,并且需要 JavaScript 运行时的支持。开发人员应该检查他们只使用了现代浏览器支持的语言特性(例如,阶段4 ECMAScript特性的子集)。由于 Sucrase 不会检查代码库是否存在错误,所以应该将它与linter或 typechecker 结合在一起使用。


在架构方面,为了获得更好的性能,Sucrase 的语法树转换是复杂且耦合的。因此,Sucrase 不支持插件,并且很难使用新的语言扩展和即将到来的语言特性进行扩展。


Sucrase 试图提供更好的开发者体验,特别是在大型代码库上。因为在大型代码库中,构建速度可能很慢,用于解决构建速度问题的缓存本身可能很脆弱,有时候缓存本身也需要一个缓慢的构建过程。对于测试来说,这个问题特别严重。测试是一个快速迭代的过程,完全可以从改进的编译速度中获益。


然而,Sucrase 并不打算取代 Babel。文档中提到:


在生产环境中使用 Sucrase 之前要仔细考虑好。Sucrase 在开发过程中非常有用,但在其他情况下,Babel 或 tsc 更适合于生产环境的构建。


Sucrase 采用了 MIT 开源许可,它的很大一部分其实是Babel解析器的一个分支,也是基于 MIT 许可。Sucrase 项目欢迎开发者以 bug 报告、拉取请求、文档、测试或其他形式为项目提供帮助。贡献者必须遵循贡献指南


原文链接


Sucrase, a Faster Babel for Modern JS Runtimes


2019-07-02 08:006188
用户头像

发布了 731 篇内容, 共 469.4 次阅读, 收获喜欢 2007 次。

关注

评论 1 条评论

发布
用户头像
js 编译器只是影响开发时间的一些体验吧?如果没有特别的需求需要更换,应该还是会用稳定的 babel,毕竟开启热更新的 webpack 项目每次差异编译也不会超过一秒钟.
2019-07-08 18:18
回复
没有更多了
发现更多内容

DevOps|研发效能不是老板工程,是开发者服务

laofo

DevOps cicd 研发效能 持续交付 平台工程

一个小网站的云原生实践

松然聊技术

架构 云原生

携手共进丨九科信息入选信通院“铸基计划”高质量数字化转型产品及服务全景图,并受邀出席高质量数字转型创新大会

九科Ninetech

Jetpack-Compose 学习笔记(二)—— Compose 布局你学会了么?

修之竹

android 前端 android jetpack

这六种目前最常见分布式事务解决方案!请拿走不谢

三十而立

Java 程序员 分布式 IT

SpringBoot 实现 MySQL 百万级数据量导出并避免 OOM 的解决方案

Java你猿哥

Java MySQL spring Spring Boot ssm

三天吃透Spring Cloud面试八股文

程序员大彬

Java 面试 SpringCloud

YOWOv2:优秀的实时视频动作检测框架

Zilliz

计算机视觉 构建模型 Milvus

传统企业,如何构建性能测试技术体系

老张

技术 #性能测试

《深入理解高并发编程:JDK核心技术》-冰河新书上市

冰河

并发编程 多线程 高并发 协程 异步编程

面试造飞机?GitHub顶级“java面试手册2023”(统计通过率95%)

三十而立

Java GitHub 面试 java面试

浅析三款大规模分布式文件系统架构设计

Java你猿哥

架构 分布式 架构设计 分布式架构 系统架构设计手册

Notification(状态栏通知)详解

芯动大师

android Android Studio Notification

牧云助手:一款面向技术爱好者的远程主机管理工具

百川云开发者

运维 主机管理 终端远程协助

云智一体,深入生命科学

Baidu AICLOUD

基因测序 AI制药 AI for Science

华大北斗芯片亮相纽伦堡国际嵌入式展EW2023

江湖老铁

抽丝剥茧还原真相,记一次神奇的崩溃

阿里技术

debug

Java实战干货|Spring Boot整合MyBatis框架快速实现数据操作

三十而立

Java spring springboot

Copilot 用“粉紫色磨砂UI”和“啊啊啊BGM ”,梦境了这届网友

B Impact

硬核!阿里大佬都在内卷的SpringBoot从入门到实战笔记

Java你猿哥

Java Spring Boot ssm 实战 Spring全家桶

互联网工程师1000道Java面试题整理全集,助你一路绿灯

Java你猿哥

Java 面试 SSM框架 八股文 Java八股文

如何通过优化图片、JS等资源加载项来提高网页的加载速度?

兴科Sinco

前端开发 CDN HTTP 网页加速

焱融科技荣登《2022中国企业数智化创新TOP50》榜单

焱融科技

文件存储 分布式文件存储 数智化 高性能存储 全闪存储

自己动手写虚拟机

ScratchLab

虚拟机 kvm

马士兵教育2023年全新Java架构师学习路线「首发版」

Java你猿哥

Java 学习 架构 面试 后端

战损版JavaAgent方法耗时统计工具实现

Java你猿哥

Java Spring Boot Java Agent ssm

代码开源!阿里妈妈展示广告Match底层技术架构最新进展

阿里技术

开源

如何学习分布式系统,分布式是什么,这里有很好的解释,很全

三十而立

Java 分布式

爆火!阿里新版23年面试突击进阶手册,Github标星51k!

Java你猿哥

Java 面试 ssm 面经 八股文

Sucrase:一款比 Babel 更快的现代 JS 编译器_语言 & 开发_Bruno Couriol_InfoQ精选文章