栏目分类
热点资讯

Hifi Finance中文网

你的位置:PlayZap 中文站 > Hifi Finance中文网 > AJAX原理以及axios、fetch区别实例详解

AJAX原理以及axios、fetch区别实例详解

2025-01-03 17:44    点击次数:61

AJAX原理 Ajax的原理简单来说是在用户和服务器之间加了—个中间层(AJAX引擎),通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。使用户操作与服务器响应异步化。Ajax的过程只涉及JavaScript、XMLHttpRequest和DOM。XMLHttpRequest是ajax的核心机制 XMLHttpRequest(XHR)对象用于与服务器交互。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。XMLHttpRequest 可以用于获取任何类型的数据,而不仅仅是 XML。甚至支持 HTTP以外的协议(包括 file:// 和 FTP),尽管可能受到更多出于安全等原因的限制。 onreadystatechange:当 readyState 属性发生变化时,调用的事件处理函数readyState: 值状态描述0UNSENT代理被创建,但尚未调用 open() 方法。1OPENEDopen() 方法已经被调用。2HEADERS_RECEIVEDsend() 方法已经被调用,并且头部和状态已经可获得。3LOADING下载中; responseText 属性已经包含部分数据。4DONE下载操作已完成。response:返回的包含整个响应实体responseText:返回一个DOMString,该 DOMString 包含对请求的响应,如果请求未成功或尚未发送,则返回 null。responseType:一个用于定义响应类型的枚举值(enumerated value)。 类型解释“ ”空的 responseType 字符串与默认类型 "text" 相同。"arraybuffer"response 是一个包含二进制数据的 JavaScript ArrayBuffer。"blob"response 是一个包含二进制数据的 Blob 对象。"document"response 是一个 HTMLDocument或XMLDocument"json"response是通过将接收到的数据内容解析为JSON的JS对象"text"response 是 DOMString 对象中的文本。"ms-stream"response是流式下载的一部分;此响应类型仅允许用于下载请求,并且仅受 Internet Explorer 支持。status:返回一个无符号短整型(unsigned short)数字,代表请求的响应状态。 withCredentials:一个布尔值,用来指定跨域 Access-Control 请求是否应当带有授权信息,如 cookie 或授权 header 头。xhr.withCredentials=trueupload:代表上传进度 其他更多XMLHttpRequest相关api ajax 有那些优缺点? 优点: 通过异步模式,提升了用户体验.优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用.Ajax在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载。Ajax可以实现动态不刷新(局部刷新)缺点: 安全问题 AJAX暴露了与服务器交互的细节。对搜索引擎的支持比较弱。不容易调试。 Promise封装Ajax promise 封装实现: JQ Ajax、Axios、Fetch的核心区别 JQuery Ajax Ajax前后端数据通信「同源、跨域」 优缺点: 本身是针对MVC的编程,不符合现在前端MVVM的浪潮基于原生的XHR开发,XHR本身的架构不清晰,已经有了fetch的替代方案JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务) Axios Axios也是对ajax的封装,基于Promise管理请求,解决回调地狱问题 优缺点: 从浏览器中创建 XMLHttpRequest从 node.js 发出 http 请求支持 Promise API拦截请求和响应转换请求和响应数据取消请求自动转换JSON数据客户端支持防止CSRF/XSRF Fetch Fetch是ES6新增的通信方法,不是ajax,但是他本身实现数据通信,就是基于promise管理的 示例: 优缺点: fetcht只对网络请求报错,对400,500都当做成功的请求,需要封装去处理fetch默认不会带cookie,需要添加配置项fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了量的浪费fetch没有办法原生监测请求的进度,而XHR可以 补充:为什么要用axios? axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征: 从浏览器中创建 XMLHttpRequest从 node.js 发出 http 请求支持 Promise API拦截请求和响应转换请求和响应数据取消请求自动转换JSON数据客户端支持防止CSRF/XSRFaxios既提供了并发的封装,也没有fetch的各种问题,而且体积也较小,当之无愧现在最应该选用的请求的方式。 三选一绝必是axios了。其流程图如下: 总结 到此这篇关于AJAX原理以及axios、fetch区别的文章就介绍到这了,更多相关AJAX原理 axios、fetch区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 您可能感兴趣的文章:ajax、axios和fetch之间优缺点重点对比总结一文掌握ajax、fetch和axios的区别对比聊一聊数据请求中Ajax、Fetch及Axios的区别详解ajax、fetch、axios的区别

Powered by PlayZap 中文站 @2013-2022 RSS地图 HTML地图

Copyright Powered by365站群 © 2013-2024