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)。 - 更高的性能——得益于优化