• Node.js 22发布 快来看下都有哪些新功能
  • 发布于 2个月前
  • 183 热度
    0 评论
4 月 24 日,Node.js 发布了 v22。Node.js 22 的更新亮点包括使用require()来导入 ESM 模块、WebSocket 客户端、V8 JavaScript 引擎的更新等!Node.js 22 正式接替 Node.js 21,成为当前的发布主线。在接下来的六个月里,它将作为当前发布版(Current),直到2024 年 10 月,届时将转为活跃状态(Active)。

下面就来看看 Node.js 22 的更新内容以及 Node.js 版本更新情况!

Node.js 版本说明
Node.js 的发布可以分为三个阶段:
Current(当前):包含大部分进入 nodejs/node 主分支的非主要(非破坏性)变更。
Active LTS(活跃长期支持):新功能、错误修复和经LTS团队审核后被确定适合该发布线路且稳定的更新。
Maintenance(维护):关键错误修复和安全更新。新功能可能会根据LTS团队的判断加入。通常只在新功能支持迁移到后续发布线路的情况下才会添加。

Node.js 奇数和偶数版本的区别如下:
奇数版本适合在特定环境下进行早期功能测试,而偶数版本则适用于生产部署;
偶数最终会成为 LTS 版本。而奇数版本也不会被提升为 LTS 版本,也就不会经历“Active LTS”和“Maintenance”阶段。
Node.js 每年 10 月发布奇数版本,次年 4 月发布偶数版本,

注意,Node.js 18 将于 2025 年 4 月停止维护,因此建议开始规划升级到Node.js 20(长期支持版本LTS)或即将成为LTS 的 Node.js 22。

Node.js 的发布计划如下:

Node.js 22 更新内容
V8 JavaScript 引擎升级至 v12.4:该版本新增了WebAssembly垃圾回收、Array.fromAsync方法、Set方法增强以及迭代器助手等特性,为 Node.js 22带来更强大的性能和更丰富的功能。;

V8的Maglev编译器:现在已在支持的架构上默认启用,显著提升了短生命周期CLI程序的执行性能;

使用 require() 来导入 ESM 模块:Node.js 22新增了对同步ESM进行require()操作的支持,通过启用实验性标志--experimental-require-module,开发者可以更加便捷地同时服务CJS和ESM用户,从而推动模块系统的统一和简化。当启用该实验性标志后,Node.js 22允许require()加载满足特定条件的ES模块,这些条件包括在package.json中明确标注为ES模块或具有.mjs扩展名,并且模块中不包含顶层await,确保加载过程完全同步。这一改进使得require()能够像动态import()那样加载ES模块,并直接返回模块命名空间对象,为开发者提供了更高的灵活性和便利性。

运行package.json脚本:Node.js 22引入了实验性功能,允许通过命令行标志node --run <script-in-package-json>执行package.json中的脚本,并支持node --run test来执行测试命令,为开发者提供了更便捷的方式来运行和管理项目脚本。

观察模式:观察模式(node --watch)已稳定,该模式能够在文件变化时自动重启Node.js进程,方便开发者在开发过程中实时查看代码更改的效果。

WebSocket:默认启用了与浏览器兼容的WebSocket实现,此前需要通过--experimental-websocket标志启用。这一改变为Node.js提供了一个内置的WebSocket客户端,无需额外依赖,简化了 WebSocket 的使用。

新增glob和globSync函数:在node:fs模块中添加了glob和globSync函数,用于模式匹配。开发者现在可以利用这些函数根据指定的模式匹配文件路径。
优化AbortSignal实例的创建性能:提升了AbortSignal实例的创建效率,从而显著改善了fetch和测试运行器的性能。

用户评论