性能文章>Node.js 18 发布,引入全局 Fetch API 和核心测试运行器模块>

Node.js 18 发布,引入全局 Fetch API 和核心测试运行器模块原创

https://a.perfma.net/img/3110416
2年前
333901

Node.js 18 已发布,该版本的亮点包括将 V8 JavaScript 引擎更新到 10.1、默认启用全局 Fetch API 以及核心测试运行器模块。Node.js 18 是未来 6 个月的“当前”版本,然后在 2022 年 10 月升级为 LTS ,升级为  LTS 后将支持到 2025 年 4 月。

新的浏览器兼容 API

全局 Fetch API(实验性)

Node.js 18 默认提供一个实验性的全局 Fetch API,该实现来自 HTTP/1.1 客户端 undici ,且受到 node-fetch的启发。

此 API 的示例用法:

const res = await fetch('https://nodejs.org/api/documentation.json');
if (res.ok) {
  const data = await res.json();
  console.log(data);
}

通过此添加,可以使用以下全局变量:fetchFormDataHeadersRequestResponse

  • 可以通过 --no-experimental-fetch 命令行标志来禁用 API。
  • 该 API 将保持实验性,直到添加更多测试覆盖率,且 API 实现了尽可能多的规范。

Web Streams API(实验性)

Node.js 现在在全局范围内公开了Web Streams API 的实验性实现。这意味着以下 API 可用:

  • ReadableStream, ReadableStreamDefaultReader, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableByteStreamController, ReadableStreamDefaultController, TransformStream, TransformStreamDefaultController, WritableStream, WritableStreamDefaultWriter, WritableStreamDefaultController, ByteLengthQueuingStrategy, CountQueuingStrategy, TextEncoderStream, TextDecoderStream, CompressionStream, DecompressionStream.

其他全局 API

此外,以下 API 现在在全局范围内公开:

  • Blob- https://nodejs.org/api/buffer.html#class-blob
  • BroadcastChannel- https://nodejs.org/api/worker_threads.html#class-broadcastchannel-extends-eventtarget

测试运行器模块(实验性)

引入新的 node:test 模块,有助于创建以 TAP 格式报告结果的 JavaScript 测试。可通过 import test from 'node:test'; 引入该模块。以下是具有两个子测试的父测试示例:

test('top level test', async (t) => {
  await t.test('subtest 1', (t) => {
    assert.strictEqual(1, 1);
  });

  await t.test('subtest 2', (t) => {
    assert.strictEqual(2, 2);
  });
});

注意:测试运行器模块只能使用node:前缀,node:前缀表示加载核心模块,省略前缀并导入'test'会尝试加载用户区模块。

在文档中阅读该测试运行器的更多内容。

工具链和编译器升级

Node.js 为几个不同的平台提供了预构建的二进制文件。

  • Linux 的预构建二进制文件现在基于 Red Hat Enterprise Linux (RHEL) 8 构建,且与基于 glibc 2.28 或更高版本的 Linux 发行版兼容,例如 Debian 10、RHEL 8、Ubuntu 20.04。
  • macOS 的预构建二进制文件需要 macOS 10.15 或更高版本。
  • 对于 AIX,支持的最低架构从 Power 7 提升到 Power 8。
  • 由于在 Node.js 中构建 V8 依赖项的问题,用于 32 位 Windows 的预构建二进制文件将不可用。

V8 更新到  10.1

V8 引擎更新到 10.1 版本,该版本包括以下新功能:

  • findLast() 和 findLastIndex() 数组方法
  • Intl.Locale API 的改进
  • Intl.supportedValuesOf 函数
  • 类字段和私有类方法的性能改进
点赞收藏
堆堆

【HeapDump性能社区官方小编】各位堆友们,+微信号perfMa,可以联系上堆堆哦~

请先登录,感受更多精彩内容
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步
1
0
https://a.perfma.net/img/3110416
堆堆

徽章

【HeapDump性能社区官方小编】各位堆友们,+微信号perfMa,可以联系上堆堆哦~