Node.js 22 新版本发布:主要变化与改进

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Node.js 22 已发布:关键新特性概览



2024年4月22日,Node.js 22 正式发布——这是流行的 JavaScript 服务器端平台的新稳定版本。此次更新带来了许多性能、安全性和开发便利性方面的改进。让我们来看看最令人关注的部分。



Node.js 22 的主要变化



1. V8 引擎更新至 12.4 版本

Node.js 22 基于全新的 V8 12.4 引擎,该引擎已用于 Chrome 124。关键改进包括:

  • 数组操作优化——新的 Array.fromAsync 允许从异步迭代器创建数组,无需额外的 Promise。
  • 解析速度提升——得益于改进的 JIT 编译器,代码执行速度平均提升了 5–10%。
  • RegExp 新方法——增加了对 v 标志的支持,使正则表达式语法更加灵活。


2. WebSocket 成为稳定功能(无需标志)

此前,Node.js 中的 WebSocket 是实验性的,需要使用 --experimental-websocket 标志启动。在版本 22 中,它终于获得了稳定 API 的地位。现在您可以直接使用内置的 WebSocket,无需额外配置:

const ws = new WebSocket('ws://example.com');ws.onmessage = (event) => console.log(event.data);

这简化了实时应用程序(如聊天、追踪器、游戏)的创建。



3. 脚本默认使用 ESM 模块

从 Node.js 22 开始,如果您运行扩展名为 .mjs 的脚本,或者在 package.json 中指定了 "type": "module",则默认不再使用 CommonJS 模块系统。这是向围绕 ES 模块标准化生态系统迈出的重要一步。

  • 导入简化——现在 import/export 无需转译器即可原生运行。
  • 支持顶层 await——可以在模块顶层等待 Promise。


4. 流(Streams)操作改进

新增了用于处理流的方法:

  • ReadableStream.from()——允许从任何迭代器(例如 Set 或 Map)创建可读流。
  • WritableStream.getWriter()——简化了向流中写入数据的过程,无需额外的包装。


5. 安全性提升

Node.js 22 加强了安全策略:

  • 自动转义——通过 console.log() 输出数据到控制台时自动进行转义,以防止注入攻击。
  • 默认禁止使用过时的加密算法(例如,用于签名的 SHA-1)。


这对开发者意味着什么?

Node.js 22 不仅仅是又一个版本,而是平台演进中的一个重要里程碑。开发者的主要收益包括:

  • 更少的依赖——内置的 WebSocket 和稳定的 ESM 使得可以放弃第三方包(例如 ws 或 esm)。
  • 更高的性能——得益于优化

推荐库