Products
GG网络技术分享 2025-03-18 16:16 0
Node.js 22 现已正式发布,亮点包括 require () ing ES 模块、WebSocket 客户端、V8 JavaScript 引擎的更新等等。Node.js 22 将于 10 月份进入长期支持 (LTS),但在此之前,它将在接下来的六个月内作为 “Current” 版本。
一些更新亮点包括:
V8 版本 12.4 包括 WebAssembly Garbage Collection、Array.fromAsync、Set 方法和迭代器助手等新功能。#52465
V8 的 Maglev 编译器现在在支持的架构上默认启用 (https://v8.dev/blog/maglev)。 Maglev 提高了短期 CLI 程序的性能。#51360
此版本在 --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),而不使用该标志。
#51977
Node.js 22 包括一个新的实验性功能,用于使用 cli 标志 node --run <script-in-package-json> 从 package.json 中执行脚本。它还支持 node --run test,这会执行 package.json 脚本中的测试命令。它还支持在 package.json 脚本中执行测试命令的 node --run test。#52190
将流的默认 High Water Mark 从 16KiB 增加到 64KiB。这提供了全面的性能提升,但代价是内存使用量稍高。鼓励在内存敏感环境中的用户显式设置setDefaultHighWaterMark。#52037
从这个版本开始,Watch Mode被认为是稳定的。当处于 Watch Mode时,监视文件中的更改会导致 Node.js 进程重新启动。#52074
WebSocket 的浏览器兼容实现(之前位于 flag--experimental-websocket 标志之后)将默认启用。这将为 Node.js 提供无需外部依赖的 WebSocket 客户端。#51594
此版本为 node:fs 模块添加了用于模式匹配的 glob 和 globSync 函数。开发人员现在可以利用这些函数,根据指定的模式匹配文件路径。#51912
此版本提高了创建 AbortSignal 实例的效率,从而显着提高了 fetch 和测试运行程序的性能。#52505
值得注意的是,Node.js 18 将于 2025 年 4 月终止生命周期,因此官方建议用户开始计划升级到 Node.js 20 (LTS) 或 Node.js 22(即将成为 LTS)。
Demand feedback