采访中出现的问题:axios是基于什么技术进行打包的?xhr的全称是什么?还有哪些方法?还有其他图书馆可以发送请求吗?不能用一连串致命的问题来形容~axiosaxios是一个轻量级的HTTP客户端,基于XMLHttpRequest服务(浏览器)执行HTTP请求,支持丰富的配置,支持Promise,支持浏览器和Node.js终端。在服务器端,它使用本机node.jshttp模块,而在客户端(浏览器),它使用XMLHttpRequests。特性从浏览器发出XMLHttpRequests从node.js发出HTTP请求支持PromiseAPI拦截请求和响应对象用于与服务器交互。通过XMLHttpRequest,可以在不刷新页面的情况下请求特定的URL并获取数据。这使得网页可以在不影响用户操作的情况下更新页面的部分内容。XMLHttpRequest在AJAX编程中大量使用。尽管名称如此,但XMLHttpRequest可用于获取任何类型的数据,而不仅仅是XML。它甚至支持HTTP以外的协议(包括file://和FTP),尽管出于安全原因可能受到更多限制。仔细看看,什么是XML?XML可扩展标记语言(ExtensibleMarkupLanguage,XML)是一种标记语言。XML是标准通用标记语言(SGML)的简化修改版。它主要使用可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath。XML的设计目的是传递和承载数据信息,而不是表示和显示数据,而HTML是用来表示数据的,所以XML的使用重点是描述什么是数据和承载数据信息。但是XML及其扩展经常因冗长、复杂和冗余而受到批评。JSON、YAML和S-Expressions通常被提议作为更简单的替代方案,它们专注于表示高度结构化的数据而不是可能包含高度结构化和相对非结构化内容的文档。然而,W3C标准化的XMLSchema规范提供了比更简单的序列化格式更广泛的结构化XSD数据类型,并通过XML命名空间提供了模块化和重用性。前面提到过,什么是AJAX?AJAX(AsynchronousJavaScriptAndXML)AJAX(AsynchronousJavaScriptAndXML,异步JavaScript和XML)是一种使用XMLHttpRequest技术构建更复杂动态网页的编程实践。AJAX允许只更新HTML页面的部分DOM而无需重新加载整个页面。AJAX还允许您异步工作,这意味着您的代码可以在页面的一部分尝试重新加载时继续运行(相比之下,同步阻止代码继续运行,直到页面的该部分完成重新加载)。随着交互式网站和现代网络标准的出现,AJAX逐渐被JavaScript框架中的函数和官方FetchAPI标准所取代。那么什么是原生Fetch呢?RookieFetchFetch是一种获取资源的新技术,是浏览器提供的原生AJAX接口。由于原始的XMLHttpRequest不符合关注点分离原则,而基于事件的模型在处理像现代promises这样的异步方面没有优势,Fetch的出现就是为了解决这个问题。Fetch使用起来非常简单,它返回一个Promise,即使你没有XHR开发经验,也可以快速上手。Fetch中有四个基本概念,分别是Headers、Request、Response和Body。在一个完整的HTTP请求中,其实包含了这四个概念。进一步研究FetchAPIfetch的优点:基于标准的Promise实现,支持async/await。它更底层,提供丰富的API,并且易于使用。脱离XHR是ES规范中的一个新实现。fetch的缺点:fetch只对网络请求报错,将400和500视为成功请求。服务器返回400和500错误码时,不会拒绝。只有当请求由于网络错误而无法完成时,fetch才会被拒绝。fetch默认不携带cookies,需要添加配置项。fetch不支持abort,不支持超时控制。Fetch无法原生监控请求的进度,但XHR可以。其他兼容性问题。补充:其他类库快速总结SuperAgentrequestSupertest发起请求Axios是一个基于XMLHttpRequest服务的轻量级HTTP客户端,支持丰富的配置,支持Promise。AJAX不是一种新的编程语言,而是一种使用现有标准、底层使用托管环境(XHR)的新方式(编程实践)。fetch不是对AJAX的进一步封装,而是原生的JavaScript,没有使用XMLHttpRequest对象。FetchAPI提供了一个JavaScript接口,用于访问和操作部分HTTP管道。XHR是过去和现在许多网络请求方案、工具库的基础,可用于获取任何类型的数据,而不仅仅是XML。
