第 2 章 功能
本节包含有关红帽构建的 Node.js 22 版本中的功能更改的信息。
2.1. 新功能和更改的功能 复制链接链接已复制到粘贴板!
Node.js 22 LTS 具有以下新功能和 Red Hat build of Node.js 支持的增强功能。
有关 Node.js 22 LTS 的详细信息,请参阅上游社区 发行注记 和文档。
2.1.1. V8 JavaScript 引擎升级到 v12.4 复制链接链接已复制到粘贴板!
此发行版本包括将 V8 JavaScript 引擎升级到 v12.4,这是 Chromium 124 的一部分。
升级的 V8 JavaScript 引擎包括以下新功能和增强:
有关 V8 JavaScript Engine 中可用的更改的更多信息,请参阅 V8 博客。
2.1.2. 为 Node.js 流增加默认高水标记 复制链接链接已复制到粘贴板!
红帽构建的 Node.js 22 将 Node.js 流的默认高水标记从 16 KB 增加到 65 KB。此功能增强有助于提高 Node.js 流的一般性能。
此功能增强还会导致内存用量增加。如果您的环境区分大小写,您可以使用 setDefaultHighWaterMark () 更改默认值。
如需更多信息,请参阅 Node.js new stream.Writable 和 new stream.Readable 文档。
2.1.3. 提高了 AbortSignal 创建的性能 复制链接链接已复制到粘贴板!
红帽构建的 Node.js 22 提供了更有效地创建 AbortSignal 实例。此功能增强大大提高了 fetch () API 和 test runner 模块的性能。
如需更多信息,请参阅 Node.js AbortSignal 文档。
2.1.4. 提高了同步文件系统 API 的性能 复制链接链接已复制到粘贴板!
红帽构建的 Node.js 22 通过为 UTF-8- 编码的字符串数据包含高效率快速路径来增强 writeFileSync () 方法。此发行版本还使用改进的 writeFileSync () 功能来帮助优化 appendFileSync () 方法。此功能增强侧重于最大程度提高字符串数据操作的效率。
如需更多信息,请参阅 Node.js fs.writeFileSync 和 fs.appendFileSync 文档。
2.1.5. 改进了对错误的 IPV6 配置的处理 复制链接链接已复制到粘贴板!
从 Node.js 17 以后,Node.js 不再优先选择 IPv4 地址而不是 IPv6 地址。Node.js 遵循根据域名搜索(DNS)条目返回的顺序。这个行为通常不会影响正确配置的主机。但是,此行为可能会导致部分或错误配置 IPv6 堆栈的主机出现问题。最新版本旨在通过包含 Happy Eyeballs 算法的实施以及修复边缘情况来提高用户配置不正确的 IPv6 堆栈。
红帽构建的 Node.js 22 在 net.createConnection 流中包括三个新的事件用于连接尝试:
-
当建立新的连接尝试时,会发出
connectionAttempt事件。使用 Happy Eyeballs 时,可能会多次发出此事件。 -
当连接尝试失败时,会发出
connectionAttemptFailed事件。使用 Happy Eyeballs 时,可能会多次发出此事件。 -
当连接尝试超过指定的超时时间时,会发出
connectionAttemptTimeout事件。使用 Happy Eyeballs 时,最后一次尝试不会发出此事件。如果您不使用 Happy Eyeballs,则不会发出此事件。
另外,红帽构建的 Node.js 22 解决了在上一个尝试失败后新连接尝试可能启动的问题,用户已销毁连接。此问题会在早期版本中造成一个失败的断言。
与之前的版本类似,如果您遇到问题,您可以使用 --dns-result-order=ipv4first CLI 选项恢复到旧行为。您还可以使用-- no-network-family-autoselection 选项禁用 Happy Eyeballs。
如需更多信息,请参阅 Node.js net.Socket 文档。
2.1.6. 支持 Web Streams 的保护 原始 压缩格式 复制链接链接已复制到粘贴板!
Red Hat build of Node.js 22 添加了对 CompressionStream 和 DecompressionSteam constructors 中的 deflate-raw 参数的支持。deflate-raw 参数使用没有标头和尾随校验和的 DEFLATE 算法压缩或解压缩流。此功能增强确保了现代浏览器支持的 web-streams 压缩的一致性。
如需更多信息,请参阅 Node.js CompressionStream 和 DecompressionStream 文档。
2.1.7. 对监视模式的完全支持 复制链接链接已复制到粘贴板!
红帽构建的 Node.js 22 提供监视模式,作为可在生产环境中使用的稳定功能。在早期版本中,监视模式仅作为实验性功能提供。
您可以使用 node --watch CLI 选项,以观察模式运行 Node.js 应用。以 watch 模式运行应用程序意味着,如果您修改导入的文件,进程会重启,这为内部循环开发周期提供了核心优势。
Watchdog 模式包括以下选项:
-
--watch选项以监视模式启动 Node.js。 -
--watch-path选项以监视模式启动 Node.js,并指定要监视的路径。 --watch-preserve-output选项禁止在监视模式重新启动进程时清除控制台。注意此选项还需要使用--
watch或--watch-path选项。
如需更多信息,请参阅 Node.js- -watch 文档。