Node.js 22 发布,增加了对 ESM 模块和 Web API 的支持。
Node.js 团队最近发布了 Node.js 22。主要功能包括提高与 JavaScript 本机模块和 Web API 的兼容性以及性能改进。
Node.js 21 以及支持关键的 JavaScript 模块 API,其中import.metaobject . 具体来说,Node.js 21 支持import.meta.dirname和import.meta.filename。requireNode.js 22 添加了对JavaScript 模块 (ESM) 图形同步的支持。发行说明详细信息:
如果
--experimental-require-module启用,则加载的 ECMAScript 模块require()满足以下要求:
在最近的 package.json 或 .mjs 扩展名中使用“type”:“module”字段显式标记为 ES 模块。
完全同步(不包含顶级等待)。
require()将加载请求的模块作为 ES 模块,并返回模块名称空间对象。在这种情况下,它与dynamic类似,import()但同步运行并直接返回名称空间对象。我们打算require(esm)在未来最终默认启用,而不使用该标志。
技术博主CoderOasis 提供了一个简单的代码示例来说明该功能:
// ES module: math.js
export function add(a, b) {
return a + b;
}
// CommonJS module: app.js
const { add } = require('./math.js');
console.log(add(2, 3)); // Output: 5
Node.js 21 已经提供了对Navigator API 的部分支持以及对浏览器兼容的Websocket客户端的实验性支持。在 Node.js 22 中,Websocket 支持仍处于实验阶段,但现在已成为默认设置:开发人员不再需要使用标志来激活它。
Node.js 22 显示了性能方面的持续进步。
Node.js 22 将 V8 JavaScript 引擎更新到 12.4,它利用了名为Maglev的优化 JIT 编译器(在现有Sparkplug和Turbofan编译器之间发布)。12.4 更新包括 WebAssembly Garbage Collection 和Iterator Helpers等功能。通过江流的高水位线从 16KiB 增加到 64KiB,Node.js 流的性能也得到了提高。由于这会稍微增加内存使用量,因此对于内存敏感的环境,可以通过setDefaultHighWaterMark()调整默认值。通过提高实例创建的效率,API 和测试运行器的性能fetch()得到了提升。
Node.js 是根据Open JS Foundation的 MIT 许可证提供的开源软件。通过Node.js 贡献指南和行为准则鼓励贡献和反馈。ation的 MIT 许可证提供的开源软件。通过Node.js 贡献指南和行为准则鼓励贡献和反馈。