Node.js 25 发布:更快、更安全、更贴近 Web 开发需求

更新日期: 2025-10-27 阅读: 30 标签: Node

2025年10月23日,Node.js 25.0.0 正式推出。这一版本的代号是“Iron”,意思是更稳定、更可靠。Node.js 一直在变化,它不再只是一个服务端的 JavaScript 运行环境,而是逐渐变成一个通用的 Web 开发平台。这次更新在性能、安全和 Web 标准支持方面都有明显的进步。


一、V8 引擎升级到 14.1,运行速度更快

Node.js 25 最核心的改进是使用了新版的 V8 引擎。V8 14.1 带来了几个重要的性能提升:

  1. JSON 处理更快

V8 优化了 JSON 序列化的内部处理方式。对于大型对象,转换成 JSON 字符串的速度比以前快了好几倍。这个改进对服务端渲染(SSR)、api 接口和配置服务特别有帮助,因为这些场景经常需要返回大量 JSON 数据

  1. 直接处理 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!

这个功能让二进制数据的处理变得更简单,尤其在加密、文件操作和网络通信中非常实用。

  1. 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 调整与新功能

  1. 清理旧 API

  • 移除了 SlowBuffer,这个 API 已经不建议使用很久了。

  • 废弃了 fs.rmdir(path, { recursive: true }) 的用法,建议改用:

await fs.promises.rm(path, { recursive: true, force: true });
  1. 新增功能

  • 便携式编译缓存:编译后的代码可以跨平台复用,减少了在 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 集成等新场景打下了坚实基础。

本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!

链接: https://fly63.com/article/detial/13062

关于 Node.js 里 ES6 Modules 的一次更新说明

关于 Node.js 里 ES6 Modules 的一次更新说明,总结来说:CommonJS 与 ES6 Modules 之间的关键不同在于代码什么时候知道一个模块的结构和使用它。

用node.js开发一个可交互的命令行应用

在这个教程中,我们会开发一个命令行应用,它可以接收一个 CSV 格式的用户信息文件,教程的内容大纲:“Hello,World”,处理命令行参数,运行时的用户输入,异步网络会话,美化控制台的输出,封装成 shell 命令,JavaScript 之外

Node启动https服务器

首先你需要生成https证书,可以去付费的网站购买或者找一些免费的网站,可能会是key或者crt或者pem结尾的。不同格式之间可以通过OpenSSL转换

nodejs 异步转同步

nodej项目在微信环境开发,nodejs的异步特效,会导致请求没有完成就执行下面的代码,出现错误。经过多方查找,可以使用async模块来异步转同步,只有前一个function执行callback,下一个才会执行。

基于node服务器的大文件(G级)上传

3G的大文件分1500个2M二进度文件,通post方法发送给node服务,服务器全部接收到文件后,进组装生成你上文件。

为什么要把 JavaScript 放到服务器端上运行?

JavaScript比C的开发门槛要低,尽管服务器端JavaScript存在已经很多年了,但是后端部分一直没有市场,JavaScript在浏览器中有广泛的事件驱动方面的应用,考虑到高性能、符合事件驱动、没有历史包袱这3个主要原因,JavaScript成为了Node的实现语言。

了解node.js事件循环

node.js的第一个基本论点是I / O的性能消耗是很昂贵。因此,使用当前编程技术的最大浪费来自于等待I / O完成。有几种方法可以处理性能影响

Node.js 应用:Koa2 使用 JWT 进行鉴权

在前后端分离的开发中,通过 Restful API 进行数据交互时,如果没有对 API 进行保护,那么别人就可以很容易地获取并调用这些 API 进行操作。那么服务器端要如何进行鉴权呢?

Node.js 前端开发指南

我们经常跟Node.js打交道,即使你是一名前端开发人员 -- npm脚本,webpack配置,gulp任务,程序打包 或 运行测试等。即使你真的不需要深入理解这些任务,但有时候你会感到困惑,会因为缺少Node.js的一些核心概念而以非常奇怪的方式来编码。

happypack提升项目构建速度

运行在 Node.js 之上的 Webpack 是单线程模型的,也就是说 Webpack 需要处理的任务需要一件件挨着做,不能多个事情一起做。happypack把任务分解给多个子进程去并发的执行,子进程处理完后再把结果发送给主进程。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!