axios、ajax、fetch三者的区别

发布时间 2023-11-17 16:17:47作者: 柯基与佩奇

1.ajax:是指一种创建交互式网页应用的网页开发技术,并且可以做到无需重新加载整个网页的情况下,能够更新部分网页,也叫作局部更新

优缺点:
1)局部更新
2)原生支持,不需要任何插件
3)原生支持,不需要任何插件
4)可能破坏浏览器后退功能
5)嵌套回调,难以处理

2.axios:是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中

特点:
1)从浏览器中创建 XMLHttpRequests
2)从 node.js 创建 http 请求
3)支持 Promise API
4)拦截请求和响应
5)转换请求数据和响应数据
6)取消请求
7)自动转换 JSON 数据
8)客户端支持防御 XSRF

3.fetch:使用了 ES6 中的 promise 对象。Fetch 是基于 promise 设计的。Fetch 函数就是原生 js,没有使用 XMLHttpRequest 对象。

优缺点:
1)更加底层,提供的 API 丰富(request, response)
2)脱离了 XHR,是 ES 规范里新的实现方式
3)fetch 是一个低层次的 API,可以把它考虑成原生的 XHR,所以使用起来并不是那么舒服,需要进行封装
4)fetch 只对网络请求报错,对 400,500 都当做成功的请求,需要封装去处理
5)fetch 默认不会带 cookie,需要添加配置项
6)fetch 不支持 abort,不支持超时控制,使用 setTimeout 及 Promise.reject 的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费s
7)fetch 没有办法原生监测请求的进度,而 XHR 可以