当前位置: 首页 > article >正文

JS面试题之ajax、axios、fetch的区别

Ajax

AsynchronousJavascriptAndXML

异步JavaScript和XML

它是一种创建交互式网页应用的网页开发技术

它是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。

这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页不使用ajax,如果需要更新内容,必须重载整个网页页面。其缺点如下:

  1. 本身是针对MVC编程,不符合前端MVVM的浪潮。
  2. 基于原生XHR开发,XHR本身的架构不清晰,不符合关注分离(Separation of Concerns)的原则。配置和调用方式非常混乱。而且基于事件的异步模型不友好。

Fetch

号称是ajax的替代品,是在es6出现的,使用了es6中的promise对象。

fetch是基于promise设计的。fetch的代码结构比起ajax简单多。

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

fetch的优点:

  1. 语法简洁,更加语义化
  2. 基于标准Promise实现,支持async/await,更加底层,提供的API丰富(request,response)
  3. 脱离了XHR,是ES规范里新的实现方式

fetch的缺点:

  1. fetch只对网络请求报错,对400,500都当做成功的请求。服务器返回400,500错误码时并不会reject,只有网络错误这些导致请求不能完成时,fetch才会被reject
  2. fetch默认不会带cookie,需要添加配置项:fetch(url, {credentials:‘indude’})
  3. fetch不支持abort,不支持超时控制,使用setTimeout及Promise
  4. reject实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费
  5. fetch没有办法原生监测请求的进度,而XHR可以

Axios

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

  1. 浏览器端发起XMLHttpRequest请求
  2. node端发起http请求,支持Promise API,监听请求和返回,对请求和返回进行转化
  3. 取消请求
  4. 自动转换json数据
  5. 客户端支持抵御XSRF攻击

参考资料:JS面试题之ajax、axios、fetch的区别


http://www.kler.cn/a/11817.html

相关文章:

  • Docker无缝更新Zentao
  • 通过脚本,发起分支合并请求和打tag
  • 双十一云服务器抢购后,用SD-WAN连通多云网络
  • crond 任务调度 (Linux相关指令:crontab)
  • 基于python 的opencv 使用GrabCut算法分割图像代码
  • 爬虫如何解决短效代理被封的问题?
  • React 搜索时遇到的坑
  • 适配器模式:C++设计模式中的瑞士军刀
  • 确保实时操作系统(RTOS)设备中的数据安全
  • RHCE第一次作业at和cront两个任务管理程序的区别
  • [python刷题模板] 博弈入门-记忆化搜索/dp/打表
  • 基于逻辑回归构建肿瘤预测模型
  • Java面试题总结 | Java基础部分2(持续更新)
  • 《人体地图》笔记
  • 【京准小课堂】NTP网络校时服务器(时间同步系统)参数详解
  • 企业级信息系统开发讲课笔记2.3 利用MyBatis实现关联查询
  • windows下的wsl2如何进行docker数据卷挂载
  • 1.1 Docker Engine-详细介绍
  • SCADE Display(OpenGL)软件设计文档生成工具的设计考虑
  • Cad二次开发 Database类的方法和属性
  • 【数据结构】第九站:树和二叉树
  • STM-32:I2C外设总线—硬件I2C读写MPU6050
  • 在Mac上安装Appium Desktop的具体步骤
  • Linux系统中curl命令用法
  • Redis高可用
  • Android之AppWidget 开发浅析