Skip to content

[vue] ajax、fetch、axios这三都有什么区别? #422

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
haizhilin2013 opened this issue Jun 22, 2019 · 5 comments
Open

[vue] ajax、fetch、axios这三都有什么区别? #422

haizhilin2013 opened this issue Jun 22, 2019 · 5 comments
Labels
vue vue

Comments

@haizhilin2013
Copy link
Collaborator

[vue] ajax、fetch、axios这三都有什么区别?

@haizhilin2013 haizhilin2013 added the vue vue label Jun 22, 2019
@wenyejie
Copy link

wenyejie commented Jun 27, 2019

ajax, 实际上就是xmlHttpRequest, 旧瓶装新酒的一种新应用的称呼
fetch是新出的规范, 具体实现原理不太清楚, 但是内部返回的是一个Promise
axios是基于ajax的再次封装返回的也是Promise

@qq326943819
Copy link

ajax是概念 异步交换数据的概念
fetch是浏览器提供的webAPI 原理是基于xmlHttpRequest的封装
axios是第三方库 基于xmlHttpRequest的封装 使用更便捷

@bocaiJs
Copy link

bocaiJs commented Jul 12, 2019

ajax是最早出现发送后端请求的技术,属于原生js范畴,核心是使用XMLHttpRequest对象,使用较多并有先后顺序的话,容易产生回调地狱。

fetch号称可以代替ajax的技术,是基于es6中的Promise对象设计的,参数和jQuery中的ajax类似,它并不是对ajax进一步封装,它属于原生js范畴。没有使用XMLHttpRequest对象。

axios不是原生js,使用时需要对其进行安装,客户端和服务器端都可以使用,可以在请求和相应阶段进行拦截,基于promise对象。

https://blog.csdn.net/jennyya/article/details/83687622

@zhangyuexin
Copy link

ajax:封装了原生的XHR,发送请求。
axios:同样使用XHR,不过与ajax不同的是,axios是在nodejs中发送请求。
fetch:不是XHR,而是另一种api。
区别很多,不过我认为这几个是重要区别

@radio-qq
Copy link

radio-qq commented Jan 1, 2021

个人理解,不一定对:
ajax:最原始的后端请求技术,new XMLHttpRequest()创建xhr对象,用setRequestHeader()设置请求头、send发送请求等。。
axios:写法axios().then().catch(),基于XMLHttpRequest封装的Promise实现版本,区别有从 node.js 创建 http 请求等
fetch:fetch().then().then().catch(),基于原生js,没有使用XMLHttpRequest对象

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
vue vue
Projects
None yet
Development

No branches or pull requests

6 participants