2025年10月23日,Node.js 25.0.0 正式推出。这一版本的代号是“Iron”,意思是更稳定、更可靠。Node.js 一直在变化,它不再只是一个服务端的 JavaScript 运行环境,而是逐渐变成一个通用的 Web 开发平台。这次更新在性能、安全和 Web 标准支持方面都有明显的进步。
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 应用或者需要隔离的服务器环境。
之前,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
移除了 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 正在朝着“通用 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 集成等新场景打下了坚实基础。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!
关于 Node.js 里 ES6 Modules 的一次更新说明,总结来说:CommonJS 与 ES6 Modules 之间的关键不同在于代码什么时候知道一个模块的结构和使用它。
在这个教程中,我们会开发一个命令行应用,它可以接收一个 CSV 格式的用户信息文件,教程的内容大纲:“Hello,World”,处理命令行参数,运行时的用户输入,异步网络会话,美化控制台的输出,封装成 shell 命令,JavaScript 之外
首先你需要生成https证书,可以去付费的网站购买或者找一些免费的网站,可能会是key或者crt或者pem结尾的。不同格式之间可以通过OpenSSL转换
nodej项目在微信环境开发,nodejs的异步特效,会导致请求没有完成就执行下面的代码,出现错误。经过多方查找,可以使用async模块来异步转同步,只有前一个function执行callback,下一个才会执行。
3G的大文件分1500个2M二进度文件,通post方法发送给node服务,服务器全部接收到文件后,进组装生成你上文件。
JavaScript比C的开发门槛要低,尽管服务器端JavaScript存在已经很多年了,但是后端部分一直没有市场,JavaScript在浏览器中有广泛的事件驱动方面的应用,考虑到高性能、符合事件驱动、没有历史包袱这3个主要原因,JavaScript成为了Node的实现语言。
node.js的第一个基本论点是I / O的性能消耗是很昂贵。因此,使用当前编程技术的最大浪费来自于等待I / O完成。有几种方法可以处理性能影响
在前后端分离的开发中,通过 Restful API 进行数据交互时,如果没有对 API 进行保护,那么别人就可以很容易地获取并调用这些 API 进行操作。那么服务器端要如何进行鉴权呢?
我们经常跟Node.js打交道,即使你是一名前端开发人员 -- npm脚本,webpack配置,gulp任务,程序打包 或 运行测试等。即使你真的不需要深入理解这些任务,但有时候你会感到困惑,会因为缺少Node.js的一些核心概念而以非常奇怪的方式来编码。
运行在 Node.js 之上的 Webpack 是单线程模型的,也就是说 Webpack 需要处理的任务需要一件件挨着做,不能多个事情一起做。happypack把任务分解给多个子进程去并发的执行,子进程处理完后再把结果发送给主进程。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!