河源市自学考试专升本招生2023已更新(分类/商情)

大家好,很高兴又见面了,我是"前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!


前端?进阶?

前言

如果您最近使用过 Javascript,那么很有可能使用过 Axios。 截至撰写本文时,它的 npm 统计数据表明它每周下载量达到4200w,每月被下载超过1.5 亿次,每年总计超过14亿次!从Github数据来看,Axios的总star达到了98.8k,而fork数据达到了10.2k,1.2k的watching,热度可见一斑。



2015 年,浏览器引入了 Fetch API,开发人员终于可以如愿以偿摆脱 HTMLHttprequest。 然而,Axios 的受欢迎程度并没有因为Fetch的出现而受到影响,下面是自 2015 年以来的Axios库的下载数据图表。



从整个2015年到2022年的数据曲线来看,Axios的下载量几乎是直线上升的趋势,而且并没有受到fetch的影响。那么是什么魔力,使得Axios如此受欢迎。下面我们从几个Axios 和fetch的典型示例进行下简单比较。

1.什么是Axios?


什么是Axios?

Axios是一个基于promise 的网络请求库,作用于node.js和浏览器环境中,它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生node.js http模块, 而在客户端 (浏览端) 则使用XMLHttpRequest。比如下面的示例:


默认情况下,响应数据以 JSON 格式返回,因此可以使用 data 属性立即访问它。 Axios在底层使用 XMLHttpRequest,这是浏览器兼容性特别好的原因。Axios核心功能包括:

  • 在浏览器中创建 XMLHttpRequests对象
  • 在 node.js 环境中利用http原生模块发出 http 请求
  • 取消请求,拦截请求和响应等诸多特性
2.什么是fetch?

Fetch与XMLHttpRequest类似,允许发出AJAX请求。区别在于Fetch使用Promise方式,是一种更加简洁明了的API,比XMLHttpRequest更加简单易用。这一点与上文的Axios类似。

Fetch API 提供了一个简单、易用的接口来获取远程资源。 更具体地说,Fetch提供了访问和操作部分 HTTP 管道的方法,包括请求和响应。

使用 Fetch API 可以实现 Axios 几乎所有的功能。 实际上,Fetch API 是一个原生接口,比 Axios 具有更多的使用场景。 但是,因为Fetch更加偏底层,所以易用性稍微弱一点。这也是为什么Axios如何流行的原因。

3.Axios vs. fetch的典型差异


图片来自“Piumi Liyana Gunawardhana”的文章《Performing HTTP Requests: Fetch Vs Axios》

3.1 语法差异

在深入研究 Axios 的更多高级特性之前,先和fetch对比下基本的语法。 以下是如何使用 Axios 将带有自定义标头的 [POST] 请求发送到指定URL。

如果使用fetch则需要手动转换:

这个示例有以下几个点需要注意下:

  • fetch 使用 body 属性将 post 请求数据发送到服务端,而 Axios 使用 data 属性
  • 使用 JSON.stringify 方法将 fetch() 中的请求数据转换为字符串
  • Axios 会自动转换从服务器返回的数据,但是 fetch() 需要调用 response.json() 方法将数据解析为JS对象。
  • 使用Axios,可以在data对象中访问服务器提供的数据响应,而对于fetch()方法,最终数据可以任意命名
3.2 向后兼容性

Axios 的主要特点是其广泛的浏览器支持。 即使像 IE11 这样的旧浏览器也可以运行 Axios。 这是因为它在底层使用了 XMLHttpRequest。



向 AJAX 请求添加更多功能,例如文件上传、传输进度和发送表单数据的能力。 以前称为 XMLHttpRequest Level 2,这些功能现在只出现在 XMLHttpRequest 规范中。

而Fetch() 仅支持 Chrome >=42、Firefox>=39+、Edge>=14+ 、Opera>=29和 Safari >=10.3+的浏览器。


fetch:XMLHttpRequest的现代替代工具

但是,如果使用 Axios 的唯一原因是向后兼容,那么实际上并不需要 HTTP 库。 相反,您可以将 fetch() 与 polyfill 一起使用,以在不支持 fetch() 的 Web 浏览器上实现类似的功能。

whatwg-fetch:是一个 polyfill,它实现了标准 Fetch 规范的一个子集,使 fetch 成为传统 Web 应用程序中 XMLHttpRequest 的可行替代品。
3.3 响应超时


图片来源Posted By Geshan Manandhar 文章 《Using Axios timeout to make your application more efficient》

在 Axios 中设置请求超时很简单,可以使用配置对象中的可选超时属性来设置请求中止之前的毫秒数。

Fetch() 通过 AbortController 接口提供类似的功能。

3.4 HTTP拦截器

Axios 的关键特选择专业属性不是很强的专业,这类专业一般是记忆类比较多的,对于考生来说考试压力相对小很多。2.选择实践考核比较多的专业,例如视觉传达设计,环境设计等。3.选择没有数学,英语选考的专业。4.大自考和小自考都有的专业,优先小自考。性之一是它能够拦截 HTTP 请求。


Written by Derrick Kwan “HTTP vs HTTPS. What’s the Difference?”

当您需要检查或更改从应用程序到服务器的 HTTP 请求(例如,日志记录、身份验证或重试失败的 HTTP 请求)时,可以使用HTTP 拦截器。

您还可以通过如下代码清除请求或响应的所有拦截器:

默认情况下,fetch() 不提供拦截请求的方法,但可以通过覆盖全局 fetch() 方法定义拦截器,如下所示:

3.5 下载进度

进度指示器在加载大型资源时非常有用,特别是对于网速较慢的用户。 以前,JavaScript 程序员使用 XMLHttpRequest.onprogress 回调处理程序来实现进度指示器。

Fetch API 没有 onprogress 处理程序。 然而,它通过响应对象的 body 属性提供了一个 ReadableStream 实例。下面的示例说明了如何使用 ReadableStream 在图片下载过程中为用户提供即时反馈:

在 Axios 自学考试的条件1.不受性别、年龄、民族、种族和教育程度限制。(不限学历、户口、可在异地报考毕业。)2.没有入学考试。在报名期间直接找老师报名即可。3.经过国家组织的统一考试,取得合格成绩。在通过教学计划规定的全部理论和实践课程的考试后,即可取得大学专科或本科的毕业证书。本科毕业生还可以申请成人学士学位。 中实现进度指示器很简单,特别是如果您使用 Axios Progress Bar 模块。首先,您需要包含以下样式和脚本。

HTML数据:

style样式如下:

然后你可以像如下方式实现进度条:

此代码使用 FileReader API 异步读取下载的图像。 readAsDataURL 方法将图像数据作为 Base64 编码的字符串返回,然后将其插入到 img 标签的 src 属性中以显示图像。

FileReader 对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。 注意:FileReader 仅用于以安全的方式从用户(远程)系统读取文件内容 它不能用于从文件系统中按路径名简单地读取文件。要在 JavaScript 中按路径名读取文件,应使用标准 Ajax 解决方案进行服务器端文件读取,如果读取跨域,则使用 CORS 权限。
3.6 并发请求

为了同时发出多个请求,Axios 提供了 axios.all() 方法。开发者只需将请求数组传递给此方法,然后使用 axios.spread() 将响应数组的属性赋值给每一个变量:

您可以使用内置的 Promise.all() 方法获得相同的结果。将所有获取请求作为数组传递给 Promise.all()。接下来,使用异步函数处理响应,示例代码如下所示:

3.7 错误处理

使用 Axios 在规定时间内进行报名,上传照片等信息,填好专业信息,报考相关课程,选择现场确认地点,一般是在户口所在地,或异地报名,缴费即可。注意:考试名额所以是要抢的!一定要留意报考时间,提前熟悉报考流程,错过只能等下个考期。 处理错误很容易,因为错误的响应(例如 404 或 500)最终会导致 Promise 通过抛出异常而被reject。 因此,要使用 Axios 处理 404 或 400 错误,您需要使用 catch() 块,如下所示。

使用 fetch() 时,您需要读取响应对象,因为仍然使用 then() 方法解决错误的响应。 Fetch API Promise 只有在网络故障等场景下无法完成请求时才会被拒绝。

4.本文总结

本文主要和大家介绍Axios 和 fetch是什么,以及两者在关键场景的用法差异。因为篇幅问题,只是对Axios、fetch做了一个简短的介绍,但是文末的参考资料提供了大量优秀文档以供学习,如果有兴趣可以自行阅读。如果大家有什么疑问欢迎在评论区留言。

参考资料

https://blog.logrocket.com/axios-vs-fetch-best-http-requests/

https://codilime.com/blog/axios-vs-fetch/

https://blog.bitsrc.io/performing-http-requests-fetch-vs-axios-b62b44fed10d

https://geshan.com.np/blog/2022/11/axios-timeout/

https://www.geeksforgeeks.org/difference-between-fetch-and-axios-js-for-making-http-requests/

申请学位条件的说明:上述前两个条件是申请学位的基本条件。学员福利现在报名即可享受福利1、针对性的三对一服务:班主任、学管老师、辅导老师三对一对接学员教务工作,实时跟进学员学习进度;2、自学考试辅导班,网课学习更方便,自考毕业有保障;3、一站式服务平台,从报名到毕业,全流程通知服务,教学管理灵活,线上授课,工作学习两不误,轻松毕业。

https://www.netrust.net/2022/09/28/http-vs-https-whats-the-difference/

https://www.npmjs.com/package/axios

https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader


自考专科专业 自考高校
返回列表
上一篇:广州市自考网2023已更新(分类/详情)
下一篇:广州市自考专升本怎么报名2023已更新(分类/资讯)