总结一下这次考核的知识点
对于HTML
<!DOCTYPE html><html>
<head><title>Deferred Script Example</title></head>
<body>
<h1>Deferred Script Example
</h1><!-- 延迟加载的脚本 -->
<script src="deferred-script.js"defer></script><p>这是一个示例段落。</p>
</body></html>
defer属性的script引入的文件具有延迟性
在HTML的
具体来说,当浏览器遇到带有async属性的
使用async属性加载脚本的好处是可以提高页面的加载性能
async属性的script引入异步文件,下载完成后立即执行脚本
浏览器相关的内置缓存
indexDB:IndexedDB是一种低级API,用于在浏览器中存储大量结构化数据,并提供高性能的检索方法。IndexedDB通常用作浏览器的缓存机制之一。
applicationCache:applicationCache是HTML5中的一项功能,允许开发人员指定哪些文件需要缓存在离线时使用。它提供了一种离线缓存的机制,使得Web应用程序可以在没有网络连接的情况下继续运行。
Cache API:Cache API是一种用于缓存网络请求和响应的API。它允许开发人员在浏览器中创建和管理缓存,以提供更好的离线访问体验。
promise.all() promise.race()和promise.any()
promise.all:
同时处理多个promise对象,包装到一个新的Promise实例(常会被问到),如果传递的参数不是promise实例,他会调用promise.resolve方法,将参数转换实例Promise.all中传入的是数组,返回的也是是数组
这样当遇到发送多个请求并根据请求顺序获取和使用数据的场景,就可以使用Promise.all来解决
promise.race:
当要做一件事,超过多长时间就不做了,可以用这个方法来解决:
const p = Promise.race([p1, p2, p3]);
p只有一种情况,只要p1,p2,p3任意一个的状态发生改变,p的状态也随之发生改变。
promise.any:
也是同时处理promise实例,包装成一个新的promise实例。
它的状态变化跟promise.race类似,只要参数实例有一个变成fulfilled状态,包装实例就会变成fulfilled状态;如果所有参数实例都变成rejected状态,包装实例就会变成rejected状态。
和promise.race()不同点,就是promise.any()不会因为某个promise变成rejected状态而结束,必须要等到所有的参数promise变成rejected状态才结束
ajax axios fetch
ajax
本身是针对MVC编程,不符合前端MVVM的浪潮
基于原生XHR开发,XHR本身的架构不清晰
不符合关注分离(Separation of Concerns)的原则
配置和调用方式非常混乱,而且基于事件的异步模型不友好。
Fetch的代码结构比起ajax简单多。fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。
fetch
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可以
Axios
fetch没有办法原生监测请求的进度,而XHR可以
node端发起http请求
支持Promise Apl
监听请求和返回
对请求和返回进行转化
取消请求
自动转换json数据
客户端支持抵御XSRF攻击
下周学习计划
主要还是复习一下java写写算法然后可以学习一些好看的样式