第 2 章 功能


本节包含有关红帽构建的 Node.js 20 发行版本中的功能更改的信息。

2.1. 新特性和更改的功能

Node.js 20 LTS 有以下红帽构建的 Node.js 支持的新功能和增强。

有关 Node.js 20 LTS 的详细信息,请参阅 上游社区 发行注记 和文档

2.1.1. V8 JavaScript 引擎升级到 v11.3

此发行版本包括将 V8 JavaScript 引擎升级到 v11.3,它是 Chromium 113 的一部分。

升级的 V8 JavaScript 引擎包括以下新功能和增强:

有关 V8 JavaScript 引擎中可用更改的更多信息,请参阅 V8 博客

2.1.2. 测试运行程序模块的完整支持

红帽构建的 Node.js 20 将测试运行程序模块作为可在生产环境中使用的稳定功能提供。在早期版本中,test runner 模块仅作为实验性功能提供。

test runner 模块不旨在替换 Jest 或 Mocha 等全功能测试框架。test runner 模块提供了一种快速、简单的方法来编写和运行测试套件,而无需安装其他依赖项。

在红帽构建的 Node.js 20 中,测试运行程序模块包括以下类型的增强功能:

  • 可以使用 node --test 标志调用的命令行测试运行程序
  • 使用 --test-reporter 标志配置和自定义测试报告器
  • 使用 --experimental-test-coverage 标记进行实验性测试覆盖
  • 模拟功能

如需更多信息,请参阅 Node.js Test Runner 文档

2.1.3. 自定义 ESM loader hooks 在专用线程上运行

在红帽构建的 Node.js 20 中,您通过加载程序提供的 ECMAScipt 模块(ESM) hook (例如,--experimental-loader=myhook.mjs)在专用线程上运行,它与主应用程序线程分开。通过为加载程序提供单独的范围,这个增强可保护应用程序代码免受潜在的影响。

2.1.4. synchronous import.meta.resolve () function

在红帽构建的 Node.js 20 中,import.meta.resolve () 函数会以同步方式返回值。但是,根据您的偏好,您仍然可以定义自定义加载程序 解析 hook 作为同步或同chronous 功能。即使加载了异步 解析 hook,import.meta.resolve () 函数也会为应用程序代码同步返回值。

2.1.5. Web Crypto API 使用 WebIDL 转换器

在红帽构建的 Node.js 20 中,Web Crypto API coerces 并根据其 WebIDL 定义验证功能参数,类似于 Web Crypto API 的其他实现。此功能增强有助于提高 Node.js 和 Web Crypto API 的浏览器实现之间的互操作性。

从红帽构建的 Node.js 20 开始,import.meta.resolve (specifier) 属性不再依赖于 --experimental-import-meta-resolve 命令行界面(CLI)标记。现在,您可以使用 import.meta.resolve (specifier) 属性获取指定符字符串解析到的绝对字符串,这与 CommonJS 模块中的 require.resolve 功能类似。此功能增强有助于将 Node.js 与浏览器和其他服务器端运行时保持一致。

如需更多信息,请参阅 Node.js import.meta.resolve 文档

2.1.7. method module.register 用于模块自定义 hook

红帽构建的 Node.js 20 提供了属于 node:module API 的新 module.register (specifier[, parentURL][, options]) 方法。您可以使用这个新方法指定导出模块自定义 hook 的文件,将数据传递给 hook,并使用这些 hook 建立通信频道。此增强会取代之前版本中的行为,这需要使用 --experimental-loader 标志来指定导出 hook 的文件。

为确保自定义 hook 在任何应用程序代码运行前注册,请考虑在运行使用寄存器功能的应用程序时使用 --import 标志。

例如:

node --import ./file-that-calls-register.js ./app.js

如需更多信息,请参阅 Node.js module.register 文档

红帽构建的 Node.js 20 可让模块自定义 hook 作者 处理负载 hook 中的 ESM 和 CommonJS 源。当应用程序的主入口点由 ESM loader 处理时,这个增强适用于使用 导入require 语句引用的 CommonJS 模块。例如,当入口点是 ESM 文件或使用 --import 标志时,这个增强是相关的。这有助于简化 Node.js 加载过程的自定义,因为软件包作者可以执行额外的 Node.js 自定义,而无需依赖已弃用的 API,如 require.extensions

如需更多信息,请参阅 Node.js Hook:加载文档

2.1.9. 增强的流性能

红帽构建的 Node.js 20 提高了可读和可写入流的性能。此功能增强包括改进,如减少内存开销,改进了对可读流的 async iterator 消耗,并改进了可读流的 pipeTo 消耗。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部