Node.js 22 现已正式发布,亮点包括 require()ing ES 模块、WebSocket 客户端、V8 JavaScript 引擎的更新等等。Node.js 22 将于 10 月份进入长期支持 (LTS),但在此之前,它将在接下来的六个月内作为“Current”版本。
一些更新亮点包括:
V8 更新至 12.4
V8 版本 12.4 包括 WebAssembly Garbage Collection、Array.fromAsync、Set 方法和迭代器助手等新功能。#52465
Maglev
V8 的 Maglev 编译器现在在支持的架构上默认启用 (https://v8.dev/blog/maglev)。 Maglev 提高了短期 CLI 程序的性能。#51360
Support require()ing synchronous ESM graphs
此版本在--experimental-require-module
标志下为同步 ESM 图添加了require()
支持。此版本require()
在 标记下添加了对同步 ESM 图的支持。
如果--experimental-require-module
启用,并且被require()
加载的 ECMAScript 模块满足以下要求:
- 在最近的 package.json 或 .mjs 扩展名中使用 "type": "module" 字段显式标记为 ES 模块。
- Fully synchronous(不包含 top-level await)。
require()
将会以 ES 模块的形式加载请求的模块,并返回模块名称空间对象。在这种情况下,它类似于动态 import()
,但同步运行并直接返回名称空间对象。项目团队计划在将来默认情况下启用require(esm)
,而不使用该标志。
运行 package.json 脚本
Node.js 22 包括一个新的实验性功能,用于使用 cli 标志node --run <script-in-package-json>
从package.json
中执行脚本。它还支持node --run test
,这会执行 package.json 脚本中的测试命令。它还支持在package.json
脚本中执行测试命令的node --run test
。#52190
Stream default High Water Mark
将流的默认 High Water Mark 从 16KiB 增加到 64KiB。这提供了全面的性能提升,但代价是 内存 使用量稍高。鼓励在内存敏感环境中的用户显式设置 setDefaultHighWaterMark
。#52037
Watch Mode (node --watch)
从这个版本开始,Watch Mode 被认为是稳定的。当处于 Watch Mode 时,监视文件中的更改会导致 Node.js 进程重新启动。#52074
WebSocket
WebSocket 的浏览器兼容实现(之前位于flag--experimental-websocket
标志之后)将默认启用。这将为 Node.js 提供无需外部依赖的 WebSocket 客户端。#51594
glob 和 globSync
此版本为node:fs
模块添加了用于模式匹配的glob
和globSync
函数。开发人员现在可以利用这些函数,根据指定的模式匹配文件路径。#51912
提高 AbortSignal creation 的性能
此版本提高了创建AbortSignal
实例的效率,从而显着提高了fetch
和测试运行程序的性能。#52505
值得注意的是,Node.js 18 将于 2025 年 4 月终止生命周期,因此官方建议用户开始计划升级到 Node.js 20 (LTS) 或 Node.js 22(即将成为 LTS)。
更多详情可查看发布公告。
为您推荐与 nodejs 相关的帖子:
- Node.js v14.20.1、16.17.1 & 18.9.1 发布
- Node.js 正式发布 18.13.0 带来了这些特性
- Node.js v19.4.0 发布
- Node.js v19.9.0 发布
- Node.js 20 正式发布,引入权限控制
- Node.js v20.3.0 发布
- Node.js v20.3.1 发布
- Node.js v20.4.0 发布
- Node.js v18.17.0 (LTS) 发布
- Node.js v16.20.2、v18.17.1 & v20.5.1 发布
- Node.js 21 正式发布
- Node.js 21.2.0 发布
- Node.js v20.10.0 (LTS)
- Node.js 21.3.0 发布
- Node.js v18.19.0 (LTS) 发布