肥仔教程网

SEO 优化与 Web 开发技术学习分享平台

Node.js 24已发布,并将于10月转为LTS长期支持版本

Node.js 24 相较于当前LTS版本 Node.js 22 引入了许多新功能、性能改进和重大变化。

1. V8 引擎升级

  • Node.js 24: 升级到 V8 13.6(Node.js 22 使用 V8 12.4)。
  • 新 JavaScript 特性
  • 支持 RegExp.escape:简化正则表达式转义。
  • 支持 Explicit Resource Management(using 语句):用于自动资源管理。
  • 支持 Error.isError:更可靠的错误检测。
  • 支持 Float16Array:新的数组类型,优化数值计算。
  • 支持 Intl.DurationFormat:国际化时间格式化。
  • 支持 Promise.try:简化无参数 Promise 创建。
  • 支持正则表达式修饰符和重复命名捕获组。
  • 支持 Atomics.pause:优化多线程操作。
  • 性能提升:V8 13.6 带来更好的内存管理和执行效率,尤其在短生命周期 CLI 程序中。
  • 注意:Node.js 22 默认启用了 Maglev 编译器,但在 22.9.0 后禁用以修复性能回归。Node.js 24 未重新默认启用 Maglev,需手动配置。

2. 核心模块和 API 更新

  • Undici 7.0.0
  • Node.js 24 升级到 Undici 7.0.0(Node.js 22 使用旧版)。
  • 改进 HTTP 客户端性能,支持更新的 HTTP 标准。
  • 增强 fetch() API 的开发体验,适合构建 HTTP 密集型服务。
  • 注意:Undici 7.0.0 包含一些破坏性变化,需检查兼容性。
  • URLPattern 全局化
  • Node.js 24 将 URLPattern 设为全局对象,无需显式导入。
  • 简化 URL 模式匹配,适合路由和解析场景。
  • AsyncLocalStorage 默认使用 AsyncContextFrame
  • 提升异步上下文追踪的性能和可靠性。
  • 开发者需测试现有代码,确保与新行为兼容。
  • 权限模型改进
  • 权限模型标志从 --experimental-permission 改为 --permission。
  • 增强对文件系统、网络等的细粒度控制,适合安全敏感应用。

3. npm 升级

  • Node.js 24: 包含 npm 11(Node.js 22 使用 npm 10)。
  • 主要变化
  • 安装速度更快。
  • 改进安全检查,增强依赖管理。
  • 支持 Node.js ^20.17.0 || >=22.9.0。
  • npm init 新增 type 提示,优化 package.json 创建。
  • 移除 npm hook 命令。
  • --ignore-scripts 现在适用于所有生命周期脚本。
  • 不再回退到旧的 audit 端点,提升可靠性。

4. 测试运行器改进

  • Node.js 24
  • 测试运行器支持自动等待子测试(auto-await subtests),简化异步测试。
  • 增强 glob 模式支持,优化测试覆盖率配置。
  • Node.js 22
  • 测试运行器仍为实验性,功能较少。

5. 废弃和破坏性变化

  • 废弃功能
  • 废弃 SlowBuffer、tls.createSecurePair 等旧 API。
  • 旧式文件系统常量(如 fs.F_OK)逐步淘汰,建议使用现代替代方案。
  • 破坏性变化
  • 移除对 32 位 Windows 系统支持,需升级到 64 位环境。
  • child_process 中 spawn 和 execFile 不再接受 args 参数,需调整代码。
  • 移除 deps/simdutf,可能影响依赖此库的模块。
  • 调整构建配置(如 V8 TLS 和 MSVC 编译支持),可能影响自定义构建。
  • 平台支持
  • macOS 最低版本提升至 13.5。
  • Xcode 最低版本要求 16.1。
  • 移除对 32 位 s390 和 ppc 架构支持,armv7 降级为实验性。

6. 性能优化

  • 流(Streams)
  • Node.js 22 将默认 High Water Mark 从 16KiB 提高到 64KiB,Node.js 24 延续此优化。
  • 提升流处理性能,但内存敏感环境需手动设置 setDefaultHighWaterMark。

其他优化

  • Blob.slice() 性能提升超过 2.5 倍。
  • String.prototype.startsWith 和 endsWith 因 V8 升级而加速。
  • 更高效的 AbortSignal 创建,优化 fetch() 和测试运行器。

7. 其他功能和改进

  • 稳定的功能
  • Node.js 22 稳定的 --run 命令(运行 package.json 脚本)和 Watch 模式在 Node.js 24 中继续完善。
  • WebSocket 客户端默认启用(Node.js 22 移除实验标志)。
  • 实验性功能
  • Node.js 24 引入更多实验性 API(如 SQLite 集成),但未完全稳定。
  • 构建和工具链
  • Windows 构建从 MSVC 切换到 ClangCL,提升编译效率。
  • 增强对 Python 3.13 的支持。
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言