Node.js 25 发布:更快、更安全、更贴近 Web 开发需求
2025年10月23日,Node.js 25.0.0 正式推出。这一版本的代号是“Iron”,意思是更稳定、更可靠。Node.js 一直在变化,它不再只是一个服务端的 JavaScript 运行环境,而是逐渐变成一个通用的 Web 开发平台。这次更新在性能、安全和 Web 标准支持方面都有明显的进步。
一、V8 引擎升级到 14.1,运行速度更快
Node.js 25 最核心的改进是使用了新版的 V8 引擎。V8 14.1 带来了几个重要的性能提升:
JSON 处理更快
V8 优化了 JSON 序列化的内部处理方式。对于大型对象,转换成 JSON 字符串的速度比以前快了好几倍。这个改进对服务端渲染(SSR)、api 接口和配置服务特别有帮助,因为这些场景经常需要返回大量 JSON 数据。
直接处理 Base64 和十六进制编码
现在,Uint8Array 类型自带 Base64 和十六进制转换的方法,不再需要依赖 Buffer 或额外安装工具库。
新增的方法包括:
Uint8Array.prototype.toBase64()
Uint8Array.fromBase64()
Uint8Array.prototype.toHex()
Uint8Array.fromHex()
举个例子:
const data = new TextEncoder().encode('你好,Node.js 25!');
// 转成 Base64
const base64 = data.toBase64();
console.log(base64); // 输出 Base64 编码结果
// 从 Base64 转回来
const decoded = Uint8Array.fromBase64(base64);
console.log(new TextDecoder().decode(decoded)); // 输出:你好,Node.js 25!这个功能让二进制数据的处理变得更简单,尤其在加密、文件操作和网络通信中非常实用。
WebAssembly 运行效率提升
V8 对 WebAssembly 的编译过程做了改进,现在加载和执行 WASM 模块的速度更快。如果你用 Rust 或 C++ 写了一些高性能模块,并在 Node.js 中调用,这个改进会让 AI 计算、音视频处理等任务运行得更顺畅。
二、更精细的权限控制,应用更安全
Node.js 25 引入了一个实验性的权限模型。虽然还在完善中,但它已经可以让你更细致地控制程序能做什么、不能做什么。
你可以通过启动参数来限制程序的权限,例如:
--allow-net:允许网络访问
--allow-read:允许读取文件
--allow-write:允许写入文件
--allow-env:允许读取环境变量
--allow-inspector:允许调试工具连接
--experimental-permission:开启权限系统
下面是一个简单的示例:
// app.js
import { createConnection } from 'node:net';
try {
const socket = createConnection({ host: 'example.com', port: 80 });
socket.on('connect', () => console.log('连接成功!'));
} catch (err) {
console.error('权限被拒绝:', err.message);
}运行的时候需要明确授权:
node --experimental-permission --allow-net app.js如果没有授权,程序在使用网络时会报错。
这个功能特别适合命令行工具、插件系统、Electron 应用或者需要隔离的服务器环境。
三、更好地支持 Web 标准,localStorage 默认可用
之前,Node.js 中的 Web Storage API(包括 localStorage 和 sessionStorage)是实验性的,需要手动开启。现在,它们已经正式成为默认功能。
使用方法如下:
// 存数据
localStorage.setItem('user', JSON.stringify({ name: '张三' }));
// 取数据
const user = JSON.parse(localStorage.getItem('user'));
console.log(user); // { name: '张三' }
// 使用 sessionStorage
sessionStorage.setItem('token', 'abc123');
sessionStorage.clear();这个改进让服务端渲染(SSR)中的状态管理变得更简单。如果你在使用 Next.js、Remix 或 react Server Components 等框架,现在可以更轻松地实现服务端和浏览器之间的代码共享。
四、API 调整与新功能
清理旧 API
移除了 SlowBuffer,这个 API 已经不建议使用很久了。
废弃了 fs.rmdir(path, { recursive: true }) 的用法,建议改用:
await fs.promises.rm(path, { recursive: true, force: true });新增功能
便携式编译缓存:编译后的代码可以跨平台复用,减少了在 CI/CD 或不同机器上重复编译的时间。
WebAssembly 的 JavaScript 插件接口:让 JavaScript 和 WASM 模块之间的交互更高效,适合需要高性能插件的场景。
QUIC 协议支持增强:内部依赖的库版本升级,加强了对 HTTP/3 和 QUIC 的支持。
内置 V8 CPU 分析工具:方便开发者查找性能瓶颈。
五、Node.js 25 的发展方向:一个更通用的 Web 平台
Node.js 正在朝着“通用 Web 运行时”的方向发展。具体表现在:
性能现代化:通过新 V8 引擎、编译缓存和 WASM 优化提升运行速度。
安全默认化:引入权限模型,让程序在沙箱中运行更安全。
Web 标准化:默认支持 localStorage、fetch 等 Web 常用 API。
跨环境一致:让同一套代码在命令行、服务器、边缘节点和桌面应用中都能顺利运行。
六、升级建议
Node.js 25 目前是“Current”版本,还不是长期支持(LTS)版本。
生产环境建议先不要升级,可以继续使用 Node.js 18 或 20 等 LTS 版本。
在开发和测试环境中,你可以尝试新功能,比如:
检查现有代码是否和新版本兼容。
将 fs.rmdir 替换成 fs.rm。
测试权限模型是否影响你使用的第三方库。
尝试在服务端渲染中使用 Web Storage。
七、总结:前后端界限越来越模糊
Node.js 25 的更新反映了一个趋势:前端和后端的开发边界正在变得模糊。现在,你可以在同一个环境中使用 fetch、localStorage、权限控制、Uint8Array 编码和 WASM 插件,Node.js 不再仅仅是“后端 JavaScript”,而是正在成为下一代 Web 运行时的核心。
它正朝着更安全、更高效、更符合标准的方向发展,为全栈开发、边缘计算和 AI 集成等新场景打下了坚实基础。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!