大家好,我是童欧巴。
Node.js 22 于近日发布,本文将介绍其主要功能更新。
Node.js 22 将于十月进入长期支持(LTS)阶段,但在那之前,它将是接下来六个月的“Current”版本。
关于发布规则请见 https://github.com/nodejs/release
包括 WebAssembly 垃圾回收、Array.fromAsync[1]、Set method[2]和Iterator Helpers[3]等新功能。
默认在支持的架构上启用 Maglev[4],从而提高 CLI 程序的性能。
相关 PR 如下:
需要开启 flag --experimental-require-module
使用,同时被 require() 加载的 ECMAScript 模块需要满足以下要求:
require() 将作为 ES 模块加载请求的模块,并返回模块命名空间对象。在这种情况下,它类似于动态 import() ,但是同步运行并直接返回命名空间对象。在未来会默认情况下启用 require(esm) ,而无需 flag。
相关 PR 如下:
用于使用 CLI flag node --run<script-in-package-json>
从 package.json 执行脚本,还支持 node --run test,该功能在 package.json 脚本中执行测试命令。
相关 PR 如下:
将流的默认高水位标记从 16KiB 增加到 64KiB。这将提供全面的性能提升,但会略微增加内存使用量。鼓励在内存敏感环境中的用户明确设置 setDefaultHighWaterMark 。
相关 PR 如下:
从这个版本开始,Watch 模式达到稳定状态。在 Watch 模式下,被观察的文件更改会导致 Node.js 进程重新启动。
相关 PR 如下:
WebSocket 的浏览器兼容实现,以前通过 flag --experimental-websocket
启用,现在将默认启用。这为 Node.js 提供了一个无需外部依赖的 WebSocket 客户端。
相关 PR 如下:
此版本在 node:fs 模块中添加了用于模式匹配的函数 glob 和 globSync 。开发人员现在可以利用这些函数来根据指定的模式匹配文件路径。
相关 PR 如下:
此版本增强了创建 AbortSignal 实例的效率,从而显著提高了 fetch 和测试运行器的性能。
相关 PR 如下:
其他值得注意的更改、弃用和移除、Semver-Major、Minor 和 Patch 提交的完整列表都可以在这里找到[5]。
值得注意的是,Node.js 18 将于 2025 年 4 月结束生命周期,因此我们建议您开始计划升级到 Node.js 20(LTS)或 Node.js 22(即将成为 LTS)。
“原文链接:https://nodejs.org/en/blog/announcements/v22-release-announce”
参考资料
[1]
Array.fromAsync: https://tc39.es/proposal-array-from-async/
[2]
Set method: https://tc39.es/proposal-set-methods/
[3]
Iterator Helpers: https://tc39.es/proposal-iterator-helpers/
[4]
Maglev: https://v8.dev/blog/maglev
[5]
这里找到: https://github.com/nodejs/node/pull/52505