一、Node.js 25 来了:一次更现代、更安全的"Web Runtime"进化
Node.js 25.0.0 已于本周正式发布。
这一版本不仅带来了 V8 引擎升级(14.1) ,还正式引入 细粒度权限模型 与 默认启用的 Web Storage API,让 Node.js 在性能、安全性与 Web 标准兼容性上迈出关键一步。
从整体趋势上看,Node.js 正在从"后端运行时"演化为一个 更贴近浏览器语义的通用执行平台 。
本次版本代号 "Iron",象征稳定与强化 ------ 这也是官方对现代 Node 的定位:高性能 + 高安全 + 高兼容性。
大家好,我是考拉!
这是我历时 1 个多月翻译的 Nest.js中文文档( V10.x 版本)。就在 1024 这天上线吧!网站访问速度还是蛮快的哦!
Nest中文文档访问地址 Nest中文文档 nestjs.inode.club
二、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),简化脚本逻辑。
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
:启用权限模型
这意味着开发者可以像在浏览器沙箱中一样,隔离敏感操作,防止包依赖被攻击或误用。
js
// 示例:限制网络访问
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);
}
💡 运行时需添加:
bashnode --experimental-permission --allow-net app.js
这类安全控制为 Node CLI 工具、Electron 应用或服务端插件系统提供了新的"沙箱"基础。
四、Web 标准整合:默认启用 Web Storage
Node.js 25 正式取消了 --experimental-webstorage
标志,
Web Storage(localStorage / sessionStorage)现已默认可用!
这意味着 Node.js 现在可以像浏览器一样使用本地存储,
极大简化了 SSR(服务端渲染)与同构(isomorphic)开发流程。
js
// 示例: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 测试服务器工具
六、Node.js 25 的意义:从"服务端"走向"通用执行平台"
如果说 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 的重要一环。
中文文档刚上线,如果发现文档中有什么问题,欢迎指出,一定及时更新, 希望可以方便更多小伙伴。
1024 程序员节日快乐,无BUG,祝大家都能早早下班!
我这边也有一些Node Nest.js 技术交流交流群,感兴趣的可以加我的私人微信 ikoala520 进群,一起学习,共同进步。