Node.jsv17.5.0本周四(2022-02-10)发布。值得注意的变化是:对fetch()APIStream的实验性支持添加了find()、toArray()、forEach()、some()、every()方法去标记esmjson模块NPM更新到8.4.1node-api添加node_api_symbol_for()方法获取API支持Node.js核心导入获取API是一个令人兴奋的功能,目前在版本v17.5.0中实验性地支持。如果在未来的LTS版本中得到正式支持,则无需依赖第三方HTTP请求库。FetchAPI提供WHATWG标准接口获取资源。这是一个基于Promise的HTTP客户端,可用于简化HTTP请求。它已经在浏览器环境中得到支持。浏览器环境的兼容实现请参考Web/API/fetch,使用方法与浏览器中使用的FetchAPI一致。FetchAPI主要包括以下四个接口:fetch():该方法最常用,用于发送请求。Headers:相当于response/request的header信息,可以查询这些header信息,或者对不同的结果进行不同的操作。Request:相当于一个资源请求。Response:相当于请求的响应。一个简单的使用方法:constresponse=awaitfetch(url);console.log(response.ok);console.log(awaitresponse.json());运行时需要加上--experimental-fetch标志,比如node--experimental-fetchtest.mjs。Node.js中fetch()的实现是基于undici的,它被组织在Node.jsGithub项目下,它的几个贡献者也是Node.js项目的贡献者,致力于开发快速、可靠和合规的Node.js标准的HTTP客户端比内置的HTTP模块更快,因为它抛弃了原有的HTTP模块,直接在socket上构建。请参考作者撰写的这篇文章。requestisobsolete-推荐一个超快的Node.jsHTTPClientundici。Stream模块Node.jsv17.5.0Stream模块新增find()、toArray()、forEach()、some()、every()方法,可参考官网API#stream介绍。我们以some()方法为例,如果有大文件,则返回true。从“流”导入{可读};从'fs/promises'导入{stat};constanyBigFile=awaitReadable.from(['file1','file2','file3',]).some(async(fileName)=>{conststats=awaitstat(fileName);返回stats.size>1024*1024;},{并发数:2});注意:奇数版本不是长期支持版本。Node.js版本信息,参考Node.jsversionknowledgeHowmuch?以及如何选择?参考https://fusebit.io/blog/node-fetch/https://mp.weixin.qq.com/s/JXrInHyOk0HAAtA9-CbESwhttps://nodejs.org/en/blog/release/v17.5.0/
