作者:五月君
Node.jsv17.5.0版本于本周四(-02-10)发布,其显著变化为:
试验性支持fetch()API
Stream新增了find()、toArray()、forEach()、some()、every()方法
取消标记esmjson模块
NPM更新至8.4.1
node-api添加node_api_symbol_for()方法
fetchAPI支持
Node.js核心引入fetchAPI是一个令人兴奋的功能,目前在v17.5.0版本为试验性支持,在今后的LTS版本中如果正式支持了,就不需要在依赖第三方HTTP请求库了。
FetchAPI提供了WHATWG标准接口获取资源,这是一个基于Promise的HTTP客户端,可以用来简化HTTP请求,在浏览器环境已支持,浏览器环境的兼容性实现参考Web/API/fetch,使用方式与浏览器中使用FetchAPI一致。
FetchAPI主要包含以下四个接口:
fetch():该方法是最常用的,用于发送请求。
Headers:相当于response/request的头信息,可以使你查询到这些头信息,或者针对不同的结果做不同的操作。
Request:相当于一个资源请求。
Response:相当于请求的响应。
一个简单的使用方式:
constresponse=awaitfetch(url);console.log(response.ok);console.log(awaitresponse.json());1.2.3.4.
运行时需要加上--experimental-fetch标记,例如node--experimental-fetchtest.mjs。
Node.js中的fetch()实现基于undici,该项目位于Node.jsGithub项目组织下,其中的几位贡献者也是Node.js项目的贡献者,致力于为Node.js开发快速、可靠且符合规范的HTTP客户端,比内置的HTTP模块还要快,因为它摒弃了原有的HTTP模块,直接构建在socket之上,可参见笔者之前写的这篇文章request已废弃-推荐一个超快的Node.jsHTTPClientundici。
Stream模块
Node.jsv17.5.0Stream模块增加了find()、toArray()、forEach()、some()、every()方法,这一块可参考