NodeJS 23 来了!令人惊叹的功能 🤯
2024年10月16日发布,引入了一系列增强开发者体验、性能和安全性的功能和改进。
图片来源 Dall-E:创建一个带有 NodeJs 标志的图像缩略图,指示版本号“23”和“新功能”。未来感,霓虹绿色,黑暗背景。
本指南深入探索这些更新,并通过示例和数据说明它们的影响。
主要更新
默认 ES 模块支持与 require()
Node.js 23 启用了 ES 模块 与 require()
函数的默认使用,消除了实验标志的需求。
示例:
由 snappify 创建
解释:
这一增强简化了 ES 模块在现有代码库中的集成,促进了更加无缝的开发体验。
稳定的 --run 命令
--run
命令已稳定,允许开发人员直接从命令行执行 JavaScript 代码。
示例:
由 snappify 创建
解释:
此功能简化了快速执行 JavaScript 代码片段的过程,无需创建单独的文件,简化了测试和调试流程。
增强的测试运行器支持 Glob 模式
内置测试运行器 现在支持使用 Glob 模式指定测试文件,提高了测试配置的灵活性。
示例:
由 snappify 创建
解释:
利用 Glob 模式使开发人员能够高效地管理和执行复杂项目结构中的测试。
支持可调整大小的 ArrayBuffer
从可调整大小的 ArrayBuffer
实例创建的缓冲区现在根据基础 ArrayBuffer
的大小变化调整其长度。
示例:
由 snappify 创建
解释:
此功能提供了更大的灵活性来处理二进制数据,允许缓冲区动态反映其基础 ArrayBuffer
大小的变化。
稳定的 MockTimers API
MockTimers
API 已达到稳定状态,提供全面支持 模拟 Node.js 中的 Date
和所有主要计时器 。
示例:
由 snappify 创建
解释:
MockTimers
允许开发人员在测试中控制和操纵时间相关函数,确保时间依赖代码的一致性和可预测性测试。
更新根证书
Node.js 23 已将其根证书更新为 NSS 3.104,提高了安全性和兼容性。
此更新确保 Node.js 应用程序可以使用最新受信任的证书颁发机构建立安全连接,从而提高整体安全性。
实验性功能
TypeScript 支持
Node.js 23 引入了 实验性支持 TypeScript,允许开发人员直接运行 TypeScript 文件而无需事先编译。
示例:
由 snappify 创建
执行:
由 snappify 创建
解释:
此功能通过启用 TypeScript 代码直接执行简化了开发过程,减少了单独构建步骤的需求。
Web 存储 API
Web 存储 API 的 实验性实现 现已可用,在 Node.js 中提供 localStorage
和 sessionStorage
功能。
示例:
由 snappify 创建
解释:
此新增功能将熟悉的客户端存储机制引入服务器环境,促进 Node.js 应用程序中的数据持久化。
SQLite 集成
Node.js 23 引入了与 SQLite 数据库交互的实验性支持,通过原生 Node.js API 简化数据库管理,无需依赖于 sqlite3
等外部库。
示例:
由 snappify 创建
解释:
这种原生集成简化了 SQLite 的使用,消除了对第三方库的需求,并直接在 Node.js 应用程序中提供无缝数据库管理。
性能提升
缓冲区和文件系统性能
Node.js 23 在缓冲区和文件系统操作方面引入了性能改进,减少开销并加快数据处理任务。
关键指标:
- 缓冲区操作: 操作如
Buffer.concat
和Buffer.copy
比 Node.js 22 快多达15%。 - 文件系统调用: 使用
fs.readFile
和fs.writeFile
的文件 I/O 操作由于内部处理优化延迟减少多达10%。
示例:
由 snappify 创建
解释:
这些优化显著提高了 I/O 密集型应用程序的性能,减少资源消耗和延迟。
V8 引擎升级
Node.js 23 包含对 V8 JavaScript 引擎(版本11.7)的更新,引入了更快的执行、改进的内存管理和新的语言特性。
新语言特性:
- RegExp 匹配索引: 获取匹配子字符串的起始和结束索引。
- 排序迭代 Map 和 Set: 确保基于插入顺序的一致迭代顺序。
示例:RegExp 匹配索引
由 snappify 创建
解释:
这些升级增强了运行时效率,使开发人员能够利用最新 JavaScript 特性编写更清晰且易于维护的代码。
弃用和移除项
移除 Windows 32 位支持
Node.js 23 正式取消对32位 Windows 平台的支持。此更改使团队能够将资源集中在维护和优化现代广泛使用架构上的功能上。
影响:
在32位 Windows 上运行的应用程序必须迁移到64位环境以继续使用最新版本的 Node.js。
为什么升级到 Node.js 23
增强开发者体验
- 默认 ES 模块支持: 简化现代 JavaScript 模块系统的集成。
- 改进测试工具: 增强测试运行器简化测试执行和配置。
改善性能
- 更快的缓冲区和文件系统操作减少 I/O 密集型应用程序中的延迟。
- 升级 V8 引擎提供更好的内存管理和执行速度。
安全增强
- 更新根证书确保强大的 TLS 安全性。
- 新的安全补丁减少漏洞风险。
面向未来应用程序需求
- 对现代特性的原生支持(例如 SQLite、TypeScript)符合不断发展的开发者需求。
- 放弃遗留架构支持,将资源集中于增强稳定性和性能上。
总结
虽然仍是“当前”版本,不适用于需要 LTS 稳定性的生产环境,但对于探索新功能和测试现代能力的开发人员来说是一个绝佳选择。