概念
AJAX、Fetch和Axios都是用于在Web应用程序中
执行异步HTTP请求
的技术。它们都可以用于在不重新加载整个页面的情况下,从服务器加载和更新数据。也就是局部刷新技术
,可以做到与服务器进行交互的技术
Ajax
- 它的全称是:
Asynchronous Javascript And Xml
,翻译过来就是异步的JavaScript和XML
.是指一种创建交互式网页应用的网页开发技术, 可以访问服务器数据的局部刷新的技术
个人理解:即可以进行局部刷新的技术,又可以与服务器进行通信的技术
- Ajax是一个技术统称,是一种思想,它囊括了很多技术,不是特指某一种技术
XMLHttpRequset
是实现Ajax的一种方式,XMLHttpRequest
是一个 JavaScript 的对象,它为客户端提供了从服务器请求数据的能力
。这种能力是现代 Web 应用中 Ajax(异步 JavaScript 和 XML)交互的基础.- ajax的
异步
如何获取到数据?
使用
onreadystatechange
事件(事件队列event loop的宏任务),并结合callback
回调函数获取数据
-
ajax的
同步
,发送请求时会占据 (thread main)主线程,造成阻塞,不推荐使用 -
缺点:滥用回调函数会产生回调地狱问题,并且代码看起来不够清晰,可读性降低
Fetch
- Fetch 是在 ES6 出现的,它使用了 ES6 提出的
promise 对象
。它是 XMLHttpRequest 的替代品。 - Fetch 是一个
API
,它是真实存在的,它是基于 promise 的
。 - 特点:
- 使用 promise,不使用回调函数。
- 采用模块化设计,比如 rep、res 等对象分散开来,比较友好。
- 通过数据流对象处理数据,可以提高网站性能。
- 它采用了.then 链式调用的方式处理结果,这样不仅利于代码的可读,而且也解决了回调地狱的问题
Axios
-
Axios 是随着 Vue 的兴起而被广泛使用的,目前来说,绝大多数的 Vue 项目中的网络请求都是利用 Axios 发起的。当然它并不是一个思想,或者一个原生 API,它是一个封装库。
-
Axios 是一个基于 promise 封装的网络请求库,它是
基于 XHR
进行二次封装
。 -
特点:
- 从浏览器中创建 XMLHttpRequests
- 从 node.js 创建 http 请求
- 支持 Promise API
- 拦截请求和响应
- 转换请求数据和响应数据
- 取消请求
- 自动转换 JSON 数据
- 客户端支持防御 XSRF
简单区别:
简单对比:
网络请求 | 特点 |
---|---|
Ajax | 一种技术统称,主要利用XHR实现网络请求 |
Fetch | 具体API,基于promise,实现网络请求 |
Axios | 一个封装库,基于XHR封装,较为推荐使用 |
相关链接:
Ajax:Ajax - Web 开发者指南 | MDN (mozilla.org)
Fetch:使用 Fetch - Web API 接口参考 | MDN (mozilla.org)
Axios:Axios中文文档 | Axios中文网 | Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js (axios-http.cn)