Node.js 已合并 Fetch API
根据 Node.js 的发布记录,上个月其核心开发团队合并了为 Node.js 添加 Fetch API 的 PR。
Fetch API 提供了 WHATWG 标准接口获取资源,这是一个基于 Promise 的 HTTP 客户端,可以用来简化 HTTP 请求,在浏览器环境已支持,浏览器环境的兼容性实现参考 Web/API/fetch,使用方式与浏览器中使用 Fetch API 一致。
Fetch API 主要包含以下四个接口:
- fetch():该方法是最常用的,用于发送请求。
- Headers:相当于 response/request 的头信息,可以使你查询到这些头信息,或者针对不同的结果做不同的操作。
- Request:相当于一个资源请求。
- Response:相当于请求的响应。
对于 Node.js 来说,这是一项十分重要的特性。下面介绍一下 Fetch API 是如何产生的,以及这项新增的功能对 Node.js 开发者意味着什么?
在 Web 诞生的早期阶段,跨站点执行异步请求十分不方便,开发者需要使用笨拙的方法在多个网络之间进行交互。
1998 年,随着 Internet Explorer 5 引入XMLHttpRequest
,这一状况得以改变。它是一个旨在克服这种限制的 API。最初,XMLHttpRequest
被设计用来通过 HTTP 获取 XML 数据,因此被命名为XMLHttpRequest
。此后逐渐添加了对其他数据格式的支持,主要是 JSON、HTML 和纯文本。
XMLHttpRequest
API 在当时提供了极大的帮助,但随着网络的发展,它也变得难以操作,以至于 JavaScript 框架,特别是 jQuery,不得不对其进行抽象,以使实现更容易,以及成功/错误处理更顺畅。
2015 年,Fetch API 作为XMLHttpRequest
的现代继任者被推出,随后它成为 Web 应用中进行异步调用的事实标准。与XMLHttpRequest
相比,Fetch 的一个显著优势是它使用了 Promise 特性,提供了一个更简单、更干净的 API,同时避免了回调地狱。
尽管 Fetch API 已经诞生了一段时间,但由于一些限制,它还没有被纳入 Node.js 核心。在 Hacker News 上一个由 Node.js 核心贡献者回答的问题中,有人指出,浏览器的 Fetch API 实现依赖于基于浏览器的 Web Streams API 和AbortController
接口(用于中止获取请求),直到最近 Node.js 才有这个接口。因此,很难决定将其纳入 Node.js 核心的最佳方法。
在添加 Fetch API 之前,请求模块 (request module) 是 Node.js 中最流行的 HTTP 请求方法。但整个 JavaScript 生态迅速发展,新引入的模式使 request 过时了。这里的一个关键例子是 async/await,request API 中没有这方面的规定,由于这些限制,该项目后来被废弃。
总的来说,Fetch API 进入 Node.js 核心对开发者来说是一件好事。不过 Fetch API 在 Node.js 中完全稳定可能需要一段时间(大约一两年),因为要使其符合标准还有很多工作要做。此外,许多有趣的更新也将在不久的将来发生,其中之一包括向 Undici 添加 HTTP/2 支持,并最终支持 Fetch API 本身。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
谷歌 Fuchsia OS 可提供完整的 Chrome 浏览器体验
科技媒体 9to5Google 消息指出,谷歌自主研发的 Fuchsia 操作系统目前可提供完整的 Chrome 浏览器体验,该操作系统朝着广泛部署又迈进了一步。 此前,通过操作系统的"Simple Browser"应用(由 Chromium 引擎提供支持),用户在 Fuchsia 上以非常有限的方式访问网络已经有一段时间了。不过即便如此,但这个"browser"并没有提供一些日常的必要功能,如地址栏或标签。 而自去年开始,谷歌就在致力于将完整的 Chrome 浏览器体验带到 Fuchsia。近日,Fuchsia 的 Reddit 社区用户 oldschool-51 发现该公司已经取得了最新的进展,Simple Browser 在 Fuchsia 的应用列表中被替换为“Chromium”。 启动 Chromium 应用程序后,桌面上会显示出大家熟悉的 Chrome 设计。在实际运作过程中,9to5Google编辑由于个人笔记本电脑上的一些问题,导致无法完全在线;但他发现浏览器的外观和工作方式几乎与 Windows、Mac 或 Linux 上的完全一样。之所以说是“几乎”,则是因为仍有一...
- 下一篇
10 年历程终结束,Qt MPD 客户端停止开发
经过 10 年的发展,基于 Qt 的图形化 MPD 客户端 Cantata 正式终止开发了。 Cantata 是一个免费开源的跨平台 MPD 图形客户端(支持 Linux、macOS、Windows 和 Haiku,但自 2.3.3 版本起仅支持 Linux),具有多个 MPD 集合、高度可定制的布局、MPRISv2 DBUS 接口,以及支持 Jamendo、Magnatune、SoundCloud 和 Podcasts。 Cantata 一开始是 QtMPC 的分支,随着后续的开发,Cantata 的代码和用户界面与 QtMPC 产生了很大差异。 该项目在 2020 年 9 月发布 2.4.2 版本之后已有很长时间没有更新了,如今通过发布 Cantata 2.5 版本,开发者正式宣布 Cantata 项目的开发工作已经停止了。 虽说 Cantata 项目已停止开发,但开发者在 2.5 版本中还是新增了不少有用的功能,并修复了各种错误,其中包括:将视图中显示的专辑曲目数量增加到 500 条、记住并恢复主窗口的位置、增加对 MPD 分区的支持,以及修复了通过内置 HTTP 服务器播放本地...
相关文章
文章评论
共有0条评论来说两句吧...