百科问答小站 logo
百科问答小站 font logo



fetch 的优势在哪里? 为什么有人会在前端项目中用 fetch? 第1页

  

user avatar   catchen 网友的相关建议: 
      

axios 是给 Node 用的 fetch 替代品,因为 Node 一直没有原生的 fetch,只提供一个从 Node 早起延续下来的 http 模块。因为 http 模块不好用,axios 封装的 API 有价值。因为 axios 能够在 Node 和前端共用同一个 API,所以如果前后端都用 JavaScript 写,使用 axios 的代码可以服用。

Node v17 终于要引入 fetch API 了,虽然暂时只是实验性支持:

这意味着以后使用 fetch 的代码也可以在前后端之间复用了。其实之前也可以,但后端需要引入 node-fetch 而前端不需要。有了原生 fetch 之后,前后端无需引入任何外部依赖就能使用同一个网络 API。


因为 axios 在前端的实现依赖于 XMLHttpRequest,而这个东西不会再向前演化,所以 axios 在前端不太可能有语法之外的新功能。fetch 还可以继续向前演化,如果 Node 同步演化的话,fetch 在两端都会持续获得新功能。

前端在引入 fetch 时已经做好了跟其它前端内建类型的兼容,这也是 axios 底层的 XMLHttpRequest 不可能支持的。当然,axios 可以在封装的时候加入支持,但 fetch 的支持是原生的。这包括为 fetch 引入的 Header、Request、Response 类型,也包括 fetch 之外的内建类型如 URL、Blob、BufferArray、FormData、URLSearchParams、ReadableStream、WritableStream 等。这些内建类型还有机会继续演化,fetch 可能会跟着进行兼容性演化。

前端的 axios 如同被智子锁定了科技一样,fetch 支持的流式(stream)请求和响应都没办法做。理论上 axios 最终可以在不改变 API 的前提下切换到 fetch 上面去,但如果 axios 变成了一个 fetch 的封装,那等 Node 有了 fetch 之后为什么不直接用 fetch 呢?




  

相关话题

  独立开发先写前端还是先写后端? 
  现在大多数中国Web前端开发工程师是否会考虑无障碍性(Accessibility)? 
  有什么办法可以用纯 CSS 在现代浏览器下实现单屏内容时 footer 贴底,多屏内容时 footer 随内容向下? 
  JavaScript一个疑问,[ ] (空数组)== true ,具体如下,请问这是为何? 
  如何看待哔哩哔哩的 flv.js 作者月薪不到 5000 元? 
  如何看待 TS 团队发起的 「JS 类型标注」提案 Types as Comments? 
  为什么前端代码会被设计成允许用户在浏览器中看到,而客户端代码却不能? 
  为什么程序都要用英文写,中文不行吗? 
  请问一下各位大佬,js的静态方法有啥作用呀,写工具类吗,小菜鸡想不出来静态方法有啥作用? 
  浏览器解析Html一般是边下载边渲染么?如果是边下载边渲染的话,Html又使用GZIP格式传输,如何能够做到没有完全下载就可以渲染的呢? 

前一个讨论
开车时有什么汽车用品可以大大提高开车的舒适感?
下一个讨论
为什么NodeJS领域那么多框架,而Java则可以SpringBoot一家独大?





© 2024-11-25 - tinynew.org. All Rights Reserved.
© 2024-11-25 - tinynew.org. 保留所有权利