译者:六月君
Node.js v17.5.0版本周四(2022-02-10)正式宣布发布,其明显变动为:
实验性全力支持 fetch() APIStream 追加了 find()、toArray()、forEach()、some()、every()形式中止记号 esm json 组件NPM 预览至8.4.1node-api 加进 nodeapisymbolfor()形式
fetch API 全力支持
Node.js 核心理念导入 fetch API 是两个令人激动的机能,现阶段在v17.5.0版为实验性全力支持,在未来的 LTS 版中假如正式宣布全力支持了,就不须要在倚赖服务器端 HTTP 允诺库了。
Fetch API 提供更多了 应用程序中采用 Fetch API 完全一致。
Fetch API 主要就包涵下列五个USB:
fetch():该形式是最常见的,用作推送允诺。Headers:相等于 response/request 的头重要信息,可以使你查阅到那些头重要信息,或是特别针对相同的结论做相同的操作形式。Request:相等于两个天然资源允诺。Response:相等于允诺的积极响应。
两个单纯的采用形式:
const response = await fetch(url);console.log(response.ok);console.log(await response.json());1.2.3.4.
运转时须要加之–experimental-fetch 记号,比如 node –experimental-fetch test.mjs。
Node.js 中的 fetch()同时实现如前所述 undici,该工程项目坐落于 Node.js Github 工程项目组织机构下,当中的两位COBOL也是 Node.js 工程项目的COBOL,致力于为 Node.js 开发快速、可靠且符合规范的 HTTP 客户端,比内置的 HTTP 组件还要快,因为它摒弃了原有的 HTTP 组件,直接构建在 socket 之上,可参见笔者之前写的这篇文章request 已废弃- 推荐两个超快的 Node.js HTTP Client undici。
Stream 组件
Node.js v17.5.0 Stream 组件减少了 find()、toArray()、forEach()、some()、every()形式,这一块可参考官网 API#stream 介绍。
下面以 some()形式为例,假如有任何大文件就返回 true。
import { Readable } from stream;import { stat } from fs/promises;const anyBigFile = await Readable.from([file1,file2,file3,]).some(async (fileName)=>{ const stats = await stat(fileName); return stats.size >1024* 1024;},{ concurrency:2 });1.2.3.4.5.6.7.8.9.10.11.
注意:奇数版不是长期全力支持版,Node.js 版重要信息参考 Node.js 版知多少?又该如何选择?。
Reference
https://fusebit.io/blog/node-fetch/
https://mp.weixin.qq.com/s/JXrInHyOk0HAAtA9-CbESw
https://nodejs.org/en/blog/release/v17.5.0/