一、预加载与懒加载是什么?以及预加载使用场景!
1)预加载
预加载就是提前加载图片,当用户需要的时候可以直接从本地缓存中加载渲染,预加载是牺牲了服务器前端的性能,换取更好的用户体验,这样可以使用户的操作得到最快的反应
2)懒加载
懒加载也叫延迟加载,也叫按需加载,按照一定的条件或者满足的需求,在加载对应的资源,懒加载页面加载的速度快,可以减轻服务器的压力,节约了流量,用户体验好!
3)使用场景
预加载
在网页全部加载前,对一些主要的内容进行加载,以提供给用户更让好的体验,减少等待时间,
不使用预加载的话,首次加载项目会加载相互很长的时间,还会出现白屏,直到所有内容加载完毕
懒加载
按需加载,也就是用户去点击或者某些事件触发,才回去加载对应的资源,可以解决白屏问题
二、 JS的节流 与 防抖 以及应用场景
1、函数节流
函数节流就是指一定时间内 js 的方法只运行一次
类似于 LOL里的 CD(冷却时间) 执行过后,一定的时间内不可以执行,只在这个时间过后才可以执行
2、函数防抖
防抖就是高频控制区,也就是说,一段时间内的多次触发,都会变为最后一次触发,如果在这段时间内,再次触发,那么就会冲重新计算触发事件的冷却
类似于 LOL 里的回城 当按下回城后,在这段时间内再次按下会重新计算回城的冷却时间
3、应用场景
1)函数防抖
主要用于高频率触发事件的处理
比如说在用户在输入框输入一些信息,搜索时,可以使用函数防抖来节约请求资源
2)函数节流
在一段时间内的多次触发只执行一次
比如说在项目中,某个点击事件,例如轮播图,用户可能会多次点击,那么就可以使用节流,事件触发之后,该事件需要经过一段时间才能触发第二次
还有在项目中监听滚动条滑动事件。
三、 Get 与 Post 的区别
相同点:
都是用来向后端发送请求的请求方式
不同点:
- 对于安全性:get请求参数是会出现在 URL 中,而 POST 出现在请求体中,get安全性会较差与post请求方式
- 对于浏览器:get 会造成一次 浏览器的记录,而 post 不会
- 对于数据:get请求有长度限制,而 post 没有长度限制
- 对于作用:get是从服务器上获取数据,而 post 是向服务器发送数据
- 对于缓存:get请求可以被缓存,会保存至浏览器书签,所以就会有浏览记录post请求不具有这些功能
- get 请求在浏览器回退的时候是无害的,post 会再次请求数据!
四、深浅拷贝,以及什么时候使用?
1、深拷贝
深拷贝就是增加一个指针,并开辟一块新的内存空间,让这个指针指向这个新开辟的空间进行深拷贝(使用json的字符串 转换 或者jquery 提供的方法,循环赋值到新的内存空间,以及使用递归),当我们需要修改一个对象时,又不会改变原对象,就可以使用深拷贝,是最好的方法!
2、浅拷贝
浅拷贝就是增加一个指针,指向已经存在的一片内存空间,与其他使用该内存空间的对象共享该空间内的数据,浅拷贝只是拷贝了引用地址而已,修改之后,会影响到所有使用该数据的对象
五、axios 使用过吗?都有哪些特性?
axios 基本上是 对 ajax 的封装 用来发送 http请求 主要用于前端与后端进行数据交互
在服务器端使用 node.js 在原生中使用 XMLHttp request 并且支持 promise 操作
axios的特性
- 从浏览器中创建 XML http requests
- node.js 创建 http 请求
- 支持 promise 的 API
- 请求拦截 以及 响应拦截
- 转换请求数据和响应数据
- 取消请求
- 返回数据自动转为 JSON
- axios中 有两种 传输数据 data 与 params
data 与 params 的区别:
params 是连带请求地址一起发送的,data的作为一个请求体进行发送
params 适用于 get 请求 而 data 适用于 post put 请求方式!