Node.js 25 正式发布:性能飙升、安全升级、全面向 Web 靠拢!
点击上方 程序员成长指北,关注公众号
回复1,加入高级Node交流群
Node.js 25.0.0 已于本周正式发布。
这一版本不仅带来了 V8 引擎升级(14.1),还正式引入 细粒度权限模型 与 默认启用的 Web Storage API,让 Node.js 在性能、安全性与 Web 标准兼容性上迈出关键一步。
从整体趋势上看,Node.js 正在从“后端运行时”演化为一个 更贴近浏览器语义的通用执行平台。
本次版本代号 “Iron”,象征稳定与强化 —— 这也是官方对现代 Node 的定位:高性能 + 高安全 + 高兼容性。
V8 升级到 14.1:性能全面提升
Node.js 25 最大的底层变化是 升级到 V8 14.1 引擎,这一版本带来了显著的性能与开发体验改进:
1. JSON.stringify 大幅提速
V8 优化了内部序列化逻辑,使 JSON.stringify 在处理大型对象时速度提升可达数倍,API 返回结果更稳定。
这对于需要序列化海量配置或响应数据的场景(如 SSR、API 网关)尤其显著。
2. 内置 Uint8Array Base64/Hex 转换
Node.js 25 新增了 Uint8Array.toBase64() / Uint8Array.fromBase64() 等内置方法,
让数据编码和解码无需依赖第三方库(如 Buffer 或 base64-js),简化脚本逻辑。
// 示例:高效转换 Buffer ⇄ Base64
const buffer = Buffer.from('Hello, Node.js 25!');
const uint8 = new Uint8Array(buffer);
const base64 = uint8.toBase64();
console.log(base64); // 'SGVsbG8sIE5vZGUuanMgMjUh'
// 反向转换
const decoded = Uint8Array.fromBase64(base64);
console.log(Buffer.from(decoded).toString()); // 'Hello, Node.js 25!'
3. WebAssembly + JIT 优化
V8 持续改进了 JIT pipeline 与 wasm 编译路径,模块加载与执行延迟进一步降低。
这对于使用 Rust / C++ 模块或 AI 推理扩展的 Node 应用尤为有益。
默认更安全的 Node.js
Node.js 25 引入了新的 权限模型(Permission Model),这项实验性特性正在成为默认安全策略的核心部分。
更细粒度的运行时控制
-
--allow-net:是否允许网络访问 -
--allow-inspector:是否允许调试访问 -
--experimental-permission:启用权限模型
这意味着开发者可以像在浏览器沙箱中一样,隔离敏感操作,防止包依赖被攻击或误用。
// 示例:限制网络访问
import net from 'node:net';
try {
const socket = net.createConnection({ host: 'example.com', port: 80 });
socket.on('connect', () => console.log('Connected!'));
} catch (err) {
console.error('Permission denied:', err.message);
}
💡 运行时需添加:
node --experimental-permission --allow-net app.js
这类安全控制为 Node CLI 工具、Electron 应用或服务端插件系统提供了新的“沙箱”基础。
默认启用 Web Storage
Node.js 25 正式取消了 --experimental-webstorage 标志,
Web Storage(localStorage / sessionStorage)现已默认可用!
这意味着 Node.js 现在可以像浏览器一样使用本地存储,
极大简化了 SSR(服务端渲染)与同构(isomorphic)开发流程。
// 示例:Node 中的 localStorage
localStorage.setItem('user', JSON.stringify({ name: 'Developer' }));
const user = JSON.parse(localStorage.getItem('user'));
console.log(user); // { name: 'Developer' }
localStorage.clear();
对于使用 React Server Components、Next.js、Remix 等框架的开发者来说,
这一步让“前后端共享逻辑”更自然,也减少了环境兼容层的复杂性。
弃用与清理:告别旧时代的 API
Node.js 25 同时对历史遗留 API 做了重要清理:
-
❌ **移除
SlowBuffer**(长期弃用) -
❌ 废弃
fs.rmdir(..., { recursive: true })的 recursive 选项
→ 改用fs.rm(path, { recursive: true }) -
🧰 支持便携编译缓存(Portable Compile Cache)
提升跨平台构建与 CI/CD 性能 -
🔬 WebAssembly 新增 JSPI(JavaScript Plugin Interface)
支持 JS ↔ Wasm 的高效交互
同时,内部依赖也迎来更新:
npm → 11.6.2
nghttp3 → 1.11.0
ngtcp2 → 1.14.0(增强 QUIC 协议支持)
新增 V8 CPU 分析与 QUIC 测试服务器工具
从“服务端”走向“通用执行平台”
如果说 v18~v20 是“稳定性时代”,
那么 v25 明显代表了 Node.js 向“Web 统一运行时”的进一步靠拢:
|
演进方向 |
具体体现 |
|---|---|
| 性能现代化 |
V8 14.1 + 编译缓存 + JIT 优化 |
| 安全默认化 |
权限模型 + 沙箱机制 |
| Web 标准化 |
Web Storage、ErrorEvent 全局可用 |
| 跨环境一致性 |
SSR、CLI、Wasm 都可共享 API |
这一切,让 Node.js 不再只是“后端的 JS”,
而是逐步成为一个 可在浏览器、服务端、边缘计算中无缝运行的通用平台。
升级建议
-
v25 属于 Current(实验)版本,不建议立即用于生产环境
-
适合探索新特性、验证兼容性、提前适配 v26 LTS
-
重点关注代码中使用的:
-
-
fs.rmdir、SlowBuffer -
自定义权限模型(--allow-*)
-
Base64/Hex 编码逻辑
-
-
对 CLI / SSR / AI 推理类项目建议创建独立分支进行试用
更“Web”的 Node,更强的生态未来
Node.js 25 的每一次改动都在回应一个趋势:
前端与后端的边界,正在消失。
当你可以在同一份代码中同时使用 fetch、localStorage、Permission API、Uint8Array 编码、甚至 Wasm 插件时,
Node.js 已不再只是运行脚本的工具,而是 下一代 Web Runtime 的重要一环。
Node 社群
我组建了一个氛围特别好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你对Node.js学习感兴趣的话(后续有计划也可以),我们可以一起进行Node.js相关的交流、学习、共建。下方加 考拉 好友回复「Node」即可。
“分享、点赞、在看” 支持一波👍
更多推荐

所有评论(0)