Skip to content

Node.js v25.0.0 重磅发布:性能飙升与安全加固

发布时间:2025 年 10 月 15 日

Node.js 25 正式发布了!这是一个重大版本更新,带来了显著的性能提升、安全增强以及对 Web 标准的更好支持。让我们一起看看这个版本有哪些值得关注的重要更新。

🚀 核心引擎升级:V8 14.1

Node.js 25 将 V8 引擎升级到了 14.1 版本,这次升级带来了多项重要改进:

JSON.stringify 性能大幅提升

如果你的应用中频繁使用 JSON.stringify,那么这次更新会让你感受到明显的性能提升。V8 14.1 对 JSON 序列化进行了深度优化,处理速度更快了。

原生 Base64/Hex 转换

现在 Uint8Array 内置了 base64 和 hex 转换功能,不再需要第三方库或复杂的转换代码:

javascript
const data = new Uint8Array([72, 101, 108, 108, 111]);
// 更方便的编解码操作

WebAssembly 和 JIT 持续优化

V8 团队继续优化 WebAssembly 执行效率和 JIT 编译管道,让高性能计算场景表现更出色。

🔒 安全优先:权限模型增强

新增网络权限控制

Node.js 25 引入了 --allow-net 权限选项,让你可以精确控制应用的网络访问权限:

bash
# 限制应用只能访问特定域名
node --allow-net=api.example.com app.js

这对构建安全的服务端应用非常有帮助,可以防止恶意代码随意发起网络请求。

Inspector 权限控制

新增 --allow-inspector 选项,让你能够控制调试器的访问权限,进一步加固应用安全。

🌐 拥抱 Web 标准

Web Storage 默认启用

之前需要通过 --experimental-webstorage 标志才能使用的 Web Storage API,现在默认启用了!这意味着你可以在 Node.js 中直接使用 localStoragesessionStorage

javascript
// 现在可以直接使用,无需额外标志
localStorage.setItem('key', 'value');
const value = localStorage.getItem('key');

ErrorEvent 成为全局对象

ErrorEvent 现在是一个全局对象,与浏览器环境保持一致,让前后端代码更容易复用。

WebAssembly JSPI 支持

启用了 JSPI(JavaScript Promise Integration)支持,让 WebAssembly 模块可以更方便地与 JavaScript Promise 交互。

🧹 清理废弃 API

Node.js 25 移除或最终废弃了一些长期标记为 deprecated 的 API,让代码库更加精简:

完全移除的 API

  • SlowBuffer:早该退休的老旧 API,请使用 Buffer.allocUnsafe() 替代
  • fs.F_OK、fs.R_OK、fs.W_OK、fs.X_OK:这些常量已移除,请使用 fs.constants 中的对应值
  • Corepack:不再随 Node.js 一起分发,需要单独安装

标记为 EOL (End of Life) 的 API

  • assert.fail() 多参数形式
  • assert.CallTracker
  • crypto.ECDH.setPublicKey()
  • fs.rmdir()recursive 选项(请使用 fs.rm() 替代)
  • http.writeHeader()(请使用 writeHead() 替代)
  • 多个内部模块如 _stream_*_tls_common

⚡ 性能与开发体验优化

可移植编译缓存

新增编译缓存可移植选项,让预编译的代码可以在不同环境间共享,提升启动速度:

bash
node --experimental-portable-compile-cache app.js

CPU Profile 增强

改进了 V8 的 CPU profiling 功能,让性能分析更加准确和详细。

更好的错误提示

改进了模块实例化错误的提示信息,能更清楚地指出是哪个模块出了问题。

📦 依赖更新

  • npm 升级到 11.6.2:带来更快的安装速度和更好的依赖管理
  • ngtcp2 更新到 1.14.0:改进 QUIC 协议支持
  • nghttp3 更新到 1.11.0:提升 HTTP/3 性能

🔧 构建和工具链升级

  • 最低 Clang 版本要求提升到 19
  • 支持 Python 3.14:构建工具链保持现代化
  • 最低 Xcode 版本要求提升到 16.4(macOS 用户)

🎯 适合谁升级?

建议立即升级的场景

  • 大量使用 JSON 序列化的应用(性能提升明显)
  • 需要精细权限控制的安全敏感应用
  • 希望使用 Web Storage API 的项目
  • 想体验最新 V8 特性的开发者

升级前注意事项

  1. 检查废弃 API 使用:如果代码中使用了 SlowBufferfs.F_OK 等已移除的 API,需要先迁移
  2. 测试第三方模块:某些原生模块可能需要重新编译(NODE_MODULE_VERSION 更新到 141)
  3. 权限模型:如果使用了权限模型,需要了解新的 --allow-net 选项

总结

Node.js 25 是一个既强调性能又重视安全的重要版本。V8 14.1 带来的性能提升,增强的权限模型,以及对 Web 标准的进一步支持,都让 Node.js 成为构建现代应用的更好选择。

虽然移除了一些废弃 API 可能需要一些迁移工作,但这让整个生态更加健康和现代化。如果你正在启动新项目,Node.js 25 绝对是一个值得考虑的选择!


相关链接:

何以解忧,唯有代码。不忘初心,方得始终。