TL;DR: 让我们探索 Node.js 22 的主要功能,包括 ECMAScript 模块支持和 V8 引擎更新。此版本引入了 Maglev 编译器和内置 WebSocket 客户端,以增强性能和实时通信。还涵盖了测试、调试和文件系统管理方面的改进。 Node.js 22 将于 10 月进入 LTS,现在是尝试这些功能的最佳时机!
在本博客中,我们将探讨 5 月 2 日发布的 Node.js 最新稳定版本 Node.js 22.1.0 的功能。 Node.js 是一个免费、开源、跨平台的 JavaScript 运行时环境,专为开发人员创建服务器、Web 应用程序、命令行工具和脚本而设计。
版本 22 加载了一系列令人兴奋的功能和增强功能!它带来了增强的功能,包括 CommonJS 模块中 require () ECMAScript 模块 (ESM)。 Node.js 22 将是当前版本,直到下个月,并在 10 月份进入长期支持 (LTS)。在此之前,请探索这些新功能并评估它们对您的应用程序的影响。
V8 是 Google 使用 C++ 开发的开源、高性能 JavaScript 和 WebAssembly 引擎。它用于 Chrome、Node.js 和其他平台。 V8 支持 ECMAScript 和 WebAssembly,在具有 x64、IA-32 或 ARM 处理器的 Windows、macOS 和 Linux 系统上运行,并且可以集成到 C++ 应用程序中。
V8 引擎已更新至版本 12.4,其中包括 WebAssembly、垃圾回收和数组等功能。
Node.js 22 引入了一项重大更新,支持 require() ECMAScript 模块图。此增强功能允许开发人员使用 require() 函数加载 ESM 图。 ECMAScript 模块代表了现代 JavaScript 模块系统,提供了传统 CommonJS 模块的替代方案。
Node.js 支持使用 require() 函数同步 ESM 导入,由 –experimental-require-module 标志促进。当启用此标志并通过 require() 加载 ECMAScript 模块时,它必须满足两个特定条件:
在这些条件下,require()函数会将请求的模块视为ES模块并返回模块命名空间对象。此行为类似于动态 import() 函数,但同步操作,直接提供命名空间对象。
最终目标是使 require(esm) 功能成为默认行为,从而消除对实验标志的需要。
V8 Maglev 编译器是新推出的即时(JIT) 编译器,现在在支持的架构上默认启用。该编译器旨在增强短期命令行界面(CLI)程序的性能。 Maglev 编译器位于现有 Sparkplug 和 Turbofa 编译器之间,通过提供快速启动时间和高效运行时性能之间的平衡来优化代码执行。通过默认启用,它可以确保开发人员无需额外配置即可立即受益于其性能改进。
Node.js 版本 22 无缝集成了内置 WebSocket 客户端,通过消除对额外库的需求,显着增强了实时应用程序的开发流程。
Node.js 中的 WebSocket 可实现服务器和客户端之间的实时双向通信,使其成为需要低延迟更新的应用程序的理想选择,例如聊天应用程序、实时通知和实时数据源。
内置的 WebSocket 客户端以前是实验性的,但现在已经稳定,并且在 Node.js 22 中默认启用。这确保了浏览器兼容性,并允许其他 WebSocket 客户端无需外部依赖即可连接到 Node.js。这种内置的 WebSocket 功能简化了需要实时数据更新的应用程序的开发,例如聊天应用程序或实时通知。
Node.js 版本 22 在生成 AbortSignal 时引入了优化,显着受益于高级 API,例如 Fetch API 和 Node.js 的测试框架。创建 AbortSignal 实例的过程现在更加高效,从而加快依赖这些信号的任务的运行时间。
此改进直接影响使用 AbortSignal 中止异步操作的应用程序的性能,使它们更具响应性和效率。
Node.js 22 通过添加 glob 和 globSync 函数,对 node:fs 模块进行了显着增强。此更新丰富了 Node.js 的功能,提供了用于模式匹配的新工具。开发团队可以配备这些新功能,以根据指定模式匹配文件路径。
观看模式命令行功能现已达到稳定状态。最初作为 Node.js 19 中的实验性功能引入,现已在 Node.js 22 中进行了完善并完全稳定。此功能允许开发人员在监视文件中检测到更改时自动重新启动应用程序,显着提升开发效率。
可用的关键选项:
监视模式命令行的主要优点是它为开发过程带来的时间效率。通过依靠应用程序在文件更改时自动重启,开发人员可以更多地专注于编码,而不是手动重启。
在 Node.js 22 中,string_decoder 模块提供了一个 API,用于将 Buffer 对象解码为字符串,确保多字节字符被正确保留。这对于处理可能分布在多个缓冲区实例中的文本数据特别有用。
string_decoder 模块确保多字节 UTF-8 和 UTF-16 字符不会拆分到多个缓冲区实例,这在流式传输时可能会发生数据。该模块提供了一个简单的 API,其中包含将缓冲区解码为字符串的方法。
在 Node.js 22 中,流的默认高水位线已从 16 KiB 增加到 64 KiB。此调整旨在增强各种应用程序的性能,尽管它可能会导致内存使用量稍高。在内存敏感环境中工作的开发人员应考虑手动设置高水位线以满足他们的需求。
感谢您的阅读!随着 Node.js 逐渐将这些改进集成为标准功能,并且随着我们越来越接近其获得长期支持,现在是尝试这些增强功能的最佳时机。通过采用这些新功能,开发人员可以确保他们的应用程序始终处于技术前沿,充分利用 Node.js 22 提供的稳定性、性能和效率。无论您是在开发服务器应用程序、Web 应用程序,还是只是探索最新的 JavaScript 技术,Node.js 22 都是一项引人注目的更新,有望丰富您的开发体验。
要了解有关 Node.js 22 及其功能的更多信息,请访问 Node.js 官方文档和发布博客。
如果您已经是 Syncfusion 用户,可以在许可证和下载页面上获取最新版本的 Essential Studio。我们为新用户提供 30 天免费试用期,以探索我们所有组件的特性和功能。
如果您需要进一步帮助,请通过我们的支持论坛、支持门户或反馈门户联系我们。我们随时为您提供帮助!