Ajax、Axios和Fetch的区别
XMLHttpRequest
XMLHttpRequest(XHR)对象用于在页面已加载后从服务器接收数据,可以在不重新加载页面的情况下更新网页。
所有现代浏览器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都内建了 XMLHttpRequest 对象。
Ajax
JQuery 的 Ajax 是对原生 XHR 的封装,支持 JSONP。
缺点:
- 无法实现并发,多个请求之间如果有先后关系的话,就会出现回调地域。
- 没有单独的库,需要引入 JQuery,不符合 MVVM 思想。
Axios
Axios 是基于 Promise,本质上也是对原生 XHR 的封装。
优点:
- 客户端支持防止 CSRF。
- 提供了一些并发请求的接口。
- 可以拦截请求和响应。
- 可以取消请求。
Fetch
Fetch 是基于 Promise 设计的,是原生 js,没有使用 XHR 对象。
优点:
- 配置项更丰富。
- JS 底层 API,扩展性强。
缺点:
- 兼容性不强,毕竟 XHR 已经根深蒂固。