Node.js 25 正式发布:性能飙升、安全升级、全面向 Web 靠拢!

一、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);
}

💡 运行时需添加:

bash 复制代码
node --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 进群,一起学习,共同进步。

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
晨米酱3 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
汉堡大王95273 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大3 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端