Node.js v22 正式发布

2024年 4月 26日 46.1k 0

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),而不使用该标志。

#51977

运行 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模块添加了用于模式匹配的globglobSync 函数。开发人员现在可以利用这些函数,根据指定的模式匹配文件路径。#51912

提高 AbortSignal creation 的性能

此版本提高了创建AbortSignal实例的效率,从而显着提高了fetch和测试运行程序的性能。#52505

值得注意的是,Node.js 18 将于 2025 年 4 月终止生命周期,因此官方建议用户开始计划升级到 Node.js 20 (LTS) 或 Node.js 22(即将成为 LTS)。

更多详情可查看发布公告。

相关文章

塑造我成为 CTO 之路的“秘诀”
“人工智能教母”的公司估值达 10 亿美金
教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
上海新增 11 款已完成登记生成式 AI 服务

发布评论