Node.js 22 发布,原生支持 WebSocket 客户端

devtools/2024/9/23 9:36:52/

昨日,Node.js 官方博客正式宣布 Node.js 22 的发布!新版本亮点包括 require() ES 模块、WebSocket 客户端、V8 JavaScript 引擎的更新等!

Node.js 22 将在 10 月进入长期支持 (LTS),但在此之前,它将是接下来六个月的 Current 发布版。下面让我们一起来探索此最新发布提供的新特性和优势,并评估它们对您应用程序的潜在影响。

该项目在许多领域继续取得进展,许多新特性和修复程序流入现有的 LTS 发布版。变更日志中概述的 Node.js 22 的变更仅代表了自上一主要发布以来特性和工作的一小部分。

要下载 Node.js 22.0.0,请访问 Node.js 官网,您可以在其中找到发布帖子,其中包含了此发布中包含的完整提交列表。

显著变更

V8 更新至 12.4 版本

V8 12.4 版本发布包括了新特性,如 WebAssembly 垃圾回收、Array.fromAsync、Set 方法和 迭代器助手。

Maglev

V8 的 Maglev 编译器现在在支持的架构上默认启用。Maglev 提高了短期 CLI 程序的性能。

支持 require() 同步 ESM 图

此发布在标志 --experimental-require-module 下添加了对同步 ESM 图的 require() 支持。

如果启用了 --experimental-require-module,并且 require() 加载的 ECMAScript 模块满足以下要求:

  • 明确标记为 ES 模块,在最近的 package.json 中有一个 "type": "module" 字段或一个 .mjs 扩展名。
  • 完全同步(不包含顶层 await)。

require() 将加载所请求的模块作为 ES 模块,并返回模块名称空间对象。在这种情况下,它类似于动态的 import(),但是是同步运行并直接返回名称空间对象。
我们打算最终在将来默认启用 require(esm),无需标志。

运行 package.json 脚本

Node.js 22 包括了一个新实验特性,用于使用 cli 标志 node --run <script-in-package-json> 执行 package.json 中的脚本。

它还支持 node --run test,该命令执行 package.json 脚本中的测试命令。

流默认高水位标记

将流的默认高水位标记从 16KiB 增加到 64KiB。这在略微增加内存使用的情况下,全面提高了性能。建议在内存敏感环境中的用户明确设置 setDefaultHighWaterMark

观察模式 (node --watch)

从这个发布开始,观察模式被认为稳定。当处于观察模式时,被观察文件的更改会导致 Node.js 进程重新启动。

WebSocket

之前在标志 --experimental-websocket 后的浏览器兼容 WebSocket 实现将默认启用。
这为 Node.js 提供了一个无需外部依赖的 WebSocket 客户端。

glob 和 globSync

此发布为 node:fs 模块添加了 globglobSync 函数,用于模式匹配。
开发者现在可以利用这些函数根据指定的模式匹配文件路径。

提高 AbortSignal 创建的性能

此发布提高了创建 AbortSignal 实例的效率,从而显著提高了 fetch 和测试运行器的性能。

行动号召

试试新的 Node.js 22 发布版!我们总是乐于听到您的反馈。使用 Node.js 22 测试您的应用程序和模块有助于确保您的项目与最新的 Node.js 更改和特性的未来兼容性。

另外值得注意的是,Node.js 18 将在 2025 年 4 月结束生命周期,所以我们建议您开始计划升级到 Node.js 20 (LTS) 或 Node.js 22 (即将成为 LTS)。


http://www.ppmy.cn/devtools/23039.html

相关文章

基于MATLAB野外观测站生态气象数据处理分析

朱老师(副教授)&#xff1a;来自国内重点高校&#xff0c;长期从事野外观测站生态气象监测与评估研究&#xff0c;发表SCl论文多篇&#xff0c;主持国家与地方科研项目多个,在生态环境数据处理与分析中具有丰富的实践项目经验。 以野外观测站高频时序生态气象数据为例&#xff…

[C++] 类和对象 _ 剖析构造、析构与拷贝

一、构造函数 构造函数是特殊的成员函数&#xff0c;它在创建对象时自动调用。其主要作用是初始化对象的成员变量&#xff08;不是开辟空间&#xff09;。构造函数的名字必须与类名相同&#xff0c;且没有返回类型&#xff08;即使是void也不行&#xff09;。 在C中&#xff0…

Python高效修补Excel缺失数据实战指南

本文将详细介绍如何利用Python的Pandas库来识别并处理Excel文件中的缺失数据。我们将探讨几种常见的处理策略,包括删除、填充(单一插补和多重插补)、以及使用预测模型进行智能填补。通过实际代码示例,帮助读者掌握高效处理缺失值的方法,以确保数据分析的准确性和完整性。 …

Baumer工业相机堡盟工业相机如何通过NEOAPISDK查询和轮询相机设备事件函数(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPISDK查询和轮询相机设备事件函数&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机NEOAPI SDK和相机设备事件的技术背景Baumer工业相机通过NEOAPISDK在相机中查询和轮询相机设备事件函数功能1.引用合适的类文件2.通过NEOAPISDK…

C++ day5

#include <iostream> using namespace std; class Person {string name;int *age; public:Person():name("zhangsan"),age(new int(18)){cout << "Person的无参构造" << endl;}Person(string name,int age):name("zhangsan"),…

关于Dockerfile镜像实例

文章目录 Dockerfile镜像实例一、构建SSH镜像1、建立工作目录2、生成镜像3、启动容器并修改root密码 二、构建systemd镜像1、建立工作目录2、生成镜像3、运行镜像容器4、测试容器systemd 三、构建Nginx镜像1、建立工作目录2、编写Dockerfile脚本3、编写run.sh启动脚本4、生成镜…

学python的第二十三天

原文链接&#xff1a;Python 图形化界面设计&#xff08;Tkinter&#xff09; - 简书 (jianshu.com) 子窗体&#xff08;Toplevel&#xff09; 直接上代码&#xff1a; # 子窗体 from tkinter import *def newwindow():winNew Toplevel(root)winNew.geometry(320x240)winNe…

字典及GitHub字典爬取工具

红队API接口Fuzz字典可以用于WEB安全&#xff0c;渗透测试&#xff0c;SRC等场景 完整文件已上传知识星球&#xff0c;需要的朋友可加入查看。