2

Deno 1.5 使用新编译器,打包性能提升 3 倍

 3 years ago
source link: https://www.infoq.cn/article/e9jxdKSNa0g7so2MqNjX
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

为 JavaScript 和 TypeScript 开发 Deno 运行时的团队最近 发布 了 Deno 1.5。新版本通过使用基于 Rust 的 JavaScript/TypeScript 编译器 swc 来提高打包性能,并通过摇树优化进一步减少包的大小。Deno 1.5 实现了 alert、confirm 和 prompt 等 Web 平台 API,开发人员可以在终端编写简单的交互式应用程序。

Deno 团队重构了 Deno 的 TypeScript 编译器基础架构,开始使用 swc。swc 是用 Rust 编写的 JavaScript/TypeScript 编译器和打包器。swc 声称单线程速度比 Babel 快 20 倍,在一次四核基准测试中快 70 倍。Deno 1.5 的发布说明提到了 swc 对 Deno 编译性能的影响:

当我们启用类型检查时,性能提升了 3 倍,如果开启--no-check 选项,则提升 15 倍。

新的摇树优化能力进一步降低包的大小。发布说明给出了一个 源码示例 ,在使用 v1.5 而不是 v1.4 进行编译时,代码大小减少了 35%。

Deno 1.5 打好的包可以作为标准的 ES 模块发布。发布说明写道:

动态导入现在可以正常工作,import.meta.url 也可以正确设置。如果你使用 Deno 为浏览器打包代码,请确保将包作为 ES 模块加载(在<script>标签加上 type="module")。

新版本的 Deno 实现了 alert、confirm 和 prompt 等 Web 平台 API,语义与浏览器中的 API 类似。例如,在浏览器中,window.prompt 将显示一个带有可选消息的 对话框 ,提示用户输入一些文本。在 Deno 终端中,prompt 函数同样会提示用户,并同步阻塞,直到接收到输入。

上述的 API 允许开发人员在终端中实现简单的交互。发布说明提供了一个 简单的例子

mYba2qv.png!mobile

在 Node.js 中,要提示用户输入,可能需要开发人员直接操作 I/O流 (例如 process.stdin)或 通过库 来操作。

新版本 Deno 还为 REPL 添加了一些新特性。在 REPL 中,对象属性和方法可以通过按 TAB 键来自动完成。如果终端支持颜色,还可以高亮显示代码语法。REPL 现在还支持 顶级await指令

发布说明还介绍了其他一起发布的次要特性。有兴趣的开发人员可以在网上查看 发布说明

Deno 采用了 MIT 开源软件。开发者可以通过 Deno项目 参与贡献,并遵循 Deno贡献指南

原文链接:

Deno 1.5 Sees 3x Bundling Performance Improvement Due to Rust-Based JavaScript/TypeScript Compiler


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK