1.js延迟加载
1.js文件放在最底部。
但是如果js放在最前边,需要加入defer延迟加载,否则下载HTML,遇见js进行下载,在执行js,最后下载THML
defer和async 区别
async并行下载js和html 然后执行js,在执行HTML,js先加载先执行
defer 解析HTML并下载js,等HTML解析完成在执行js,并顺次执行
动态创建dom方式:对文档加载事件进行监听,文档加载完成后再动态的创建script标签引入js脚本。
使用setTimout 延迟加载
2.==与===
== 比较值
=== 比较值和类型
1=="1" true 进行隐式转化
true == 1 true 进行隐式转化
null == undefined true
[1,2] == '1,2' true 进行隐式转化
3.localstorage,sessionstorage,cookie 的区别
共同点客户端存放数据。
不同点:
有效期:localstorage持久化存储 ,sessionstorage浏览器关闭之前有效,使用cookie需要环境,cookie可以设置有效期时间,浏览器关闭依旧有效在有效时间中。
let date = new Date()
let time = 2000*60*60*24
time=date.getTime()+time
date.setTime(time)
document.cookie="xxx=xx;expires="+date.toUTCString()
存储大小:cookie 不能超过4k ,localstorage和sessionstorage不能超过5M,具体根据不同浏览器。
作用域:sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localstorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的
不同浏览器无法共享localStorage或sessionStorage中的信息。相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。
cookie在浏览器和服务器间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。
localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理
安全性:WebStorage不会随着HTTP header发送到服务器端,所以安全性相对于cookie来说比较高一些,不会担心截获,但是仍然存在伪造问题
4.大文件上传
分片上传:
文件按照规则分割成相同大小的数据块。
初始化宇哥分片上传任务,让返回唯一标识
按照一定规则把各个数据上传
发送完服务器端判断,合并成原始文件
5.token无感登录
不需要返回登录页面,判断token返回过期后调用刷新token的接口,或定时器定时刷新token
登录成功获取refreshToken和token
客户端在后续的请求中使用Token作为凭证,向服务器证明其身份和权限
保存token,401状态中引入刷新token方法,端的拦截器会检查响应中是否存在新的Token,并将其保存在本地。
替换新的token
如果refreshToken也过期了,那么需要重新登录。清除所有过期的token,然后重新执行登录流程。
6.同源策略
协议 域名 端口 相同就是同源。 不同域名指向同一个ip地址也是不同源的,产生跨越
JSONP
CORS
websocket
方向代理
7.防抖和节流
页面频繁触发事件优化
防抖:避免事件重复触发
节流:把频繁触发的事件减少,隔一时间执行,如滚动动画。
8.setTimeout最小执行时间是多少
最小执行时间是4ms(毫秒)
setInterval 最小执行时间是10ms
9.get和post
10.预检请求
如自定义header传入token会触发预检请求,这个额外的请求被称为预检请求,会对响应时间造成很大的延迟,从而影响 性能。
使用简单请求可以避免,HTTP 请求满足以下条件,可以标记为简单请求,请求方式应该是 GET,POST,HEAD。 只允许携带几个固定的头信息
预检可以避免跨域请求对服务器的用户数据产生未预期的影响。