Skip to content

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

Open
@haizhilin2013

Description

@haizhilin2013
Collaborator

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

Activity

wenyejie

wenyejie commented on Jun 27, 2019

@wenyejie

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

qq326943819

qq326943819 commented on Jun 28, 2019

@qq326943819

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

bocaiJs

bocaiJs commented on Jul 12, 2019

@bocaiJs

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

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

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

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

zhangyuexin

zhangyuexin commented on Jun 13, 2020

@zhangyuexin

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

radio-qq

radio-qq commented on Jan 1, 2021

@radio-qq

个人理解,不一定对:
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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @wenyejie@haizhilin2013@bocaiJs@qq326943819@zhangyuexin

        Issue actions

          [vue] ajax、fetch、axios这三都有什么区别? · Issue #422 · haizlin/fe-interview