page contents

ajax、axios、fetch的区别?

轩辕小不懂 发布于 2021-12-21 13:42
阅读 578
收藏 0
分类:WEB前端开发
  • js
  • 2703
    Nen
    Nen
    - 程序员

    (1)AJAX Ajax 即“AsynchronousJavascriptAndXML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。它是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。其缺点

    如下:

    本身是针对MVC编程,不符合前端MVVM的浪潮

    基于原生XHR开发,XHR本身的架构不清晰

    不符合关注分离(Separation of Concerns)的原则

    配置和调用方式非常混乱,而且基于事件的异步模型不友好。

    (2)Fetch fetch号称是AJAX的替代品,是在ES6出现的,使用了ES6中的promise对象。Fetch是基于promise设计的。Fetch的代码结构比起ajax简

    单多。fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。

    fetch的优点:

    语法简洁,更加语义化

    基于标准 Promise 实现,支持 async/await

    更加底层,提供的API丰富(request, response)

    脱离了XHR,是ES规范里新的实现方式

    fetch的缺点:

    fetch只对网络请求报错,对400,500都当做成功的请求,服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致请求不能完

    成时,fetch 才会被 reject。

    fetch默认不会带cookie,需要添加配置项: fetch(url, {credentials: ‘include’})

    fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费fetch没有办法原生监测请求的进度,而XHR可以

    (3)Axios Axios 是一种基于Promise封装的HTTP客户端,其特点如下:

    浏览器端发起XMLHttpRequests请求

    node端发起http请求

    支持Promise API

    监听请求和返回对请求和返回进行转化取消请求

    自动转换json数据

    客户端支持抵御XSRF攻击

    请先 登录 后评论