ajax、fetch与axios三者的联系与差异?
① ajax、fetch与axios是什么,有什么特点?
AJAX
AJAX 特点
是一种特别的http请求, 对服务器端来说, 没有任何区别, 区别在浏览器端
全称为Asynchronous Javascript And XML,就是异步JavaScript和****XML在浏览器中向服务器发送异步请求
最大优势:无刷新获取数据 (局部刷新页面)
Ajax不足点
多个请求之间如果有先后关系的话,就会出现回调地狱
传统 Ajax 原生写法结构比较混乱,不符合关注分离的原则
干掉了Back和History功能,即对浏览器机制的破坏
Fetch
Fetch 特点
是一种HTTP数据请求的方式,是XMLHttpRequest的一种替代方案;fetch是原生JS
相比传统 Ajax 原生结构比较混乱的写法,fetch被设计成更具可扩展性和高效性
Fetch API 是浏览器自带的 API,且它是基于标准 Promise
fetch实例
Fetch 不足有点多
fetch只对网络请求报错,对400,500都当做成功的请求
fetch默认不会带cookie,需要自行添加配置项
fetch不支持abort,不支持超时控制
fetch没有办法原生监测请求的进度
Axios
Axios ( 简单实用 - 尤雨溪大神推荐使用 )
是对原生XHR的一种封装,是Promise实现版本(基于xhr + promise的异步ajax请求库 )
因此支持promise API
同一套代码可以运行在浏览器和 node.js 中
在客户端则使用 XMLHttpRequests
在服务端使用原生 node.js中 http模块
可以在请求和响应阶段统一设置,进行拦截 (ajax、fetch是不支持的)
② 三者的关系
Ajax 是一种代表异步 JavaScript + XML 的模型(技术合集)
Fetch 也是 Ajax 的一个子集
Axios 属于传统 Ajax(XHR)的子集,因为它是基于 XHR 进行的封装