Npm - 获取与节点获取?

Ian*_*ith 19 node.js npm reactjs

这些包名称非常令人困惑,它们似乎做了同样的事情,但“fetch”看起来已被放弃,但没有标记为已弃用(最后一次提交是在 3 年前)。从下载计数来看,人们可能在应该获得受支持和维护的“node-fetch”包时下载“fetch”。

如果您正在构建 Reactjs 应用程序,那么 fetch 是否已内置?如果是这样,它与“node-fetch”不同吗?

建议 npm 用户应该使用什么包?

https://www.npmjs.com/package/fetch

https://www.npmjs.com/package/node-fetch

Mic*_*ski 29

一点历史

Fetch是由 Web 超文本应用技术工作组 (WHATWG) 于 2015 年创建的标准。它的目的是取代旧的、笨重的XMLHttpRequest发出网络请求的方式。由于它的目的是取代XMLHttpRequest该标准,显然是针对浏览器而不是 Node 运行时,但是由于它的广泛采用和交叉兼容性原因,我们决定它也应该在 Node 中实现。

尽管如此,Node 团队花了大约 3 年的时间在 Node v16 中实现了实验性的 fetch 。尽管仍处于实验阶段,但它现在在Node v18中默认启用。

由于 Node 开发团队花了很长时间才实现 Fetch 标准,因此社区自己动手并创建了实现 Fetch 标准的node-fetch包。

您提到的fetch包只是巧合地与标准命名相同,但除了它们都旨在从网络“获取”/“请求”资源之外,它与标准无关。

你应该用什么?

过去浏览器使用XMLHttpRequestAPI,而 Node 使用自己的http.request. 现在,我们有机会通过让这两个生态系统都使用 Fetch API 来拉近它们的距离。这增加了代码的互操作性,甚至在某些情况下允许浏览器和 Node 之间的代码共享。

现在,还有其他流行的软件包,例如axios或 ,requests它们仍然不使用 Fetch,而是继续使用 Node 的http库。不使用 Fetch 会降低相互兼容性,因此我认为您不应该继续使用它们中的任何一个,除非它们进行转换,而这在不久的将来是不可能的。

相反,您应该考虑使用 Node 的 nativefetchnode-fetchpackage 。哪一个呢?嗯,我的观点是 Nodefetch仍处于早期阶段,但鉴于它得到了核心 Node 团队的支持,我对此打赌。我认为node-fetch该标准得到了更广泛的采用Fetch,但我认为随着时间的推移,随着 Node 的本机fetch得到完全实现,它将会变得多余。

  • 谢谢,这是在互联网上搜索几乎不可能发现的好东西,互联网上充斥着过时的无效信息。 (2认同)