1, axios和ajax和Fetch 的区别:
axios :是通过promise实现对ajax技术的一种封装,就像jQuery实现ajax封装一样。
:客户端支持防御CSRF/XSRF
: axios 基于promise用于浏览器和node.js的http客户端。
: 在浏览器中创建XMLHttpRequest
: 自动转换JSON数据
ajax技术 :实现了网页的局部数据刷新,核心使用XMLHttpRequest,对个请求之间如果有先后关系的话,就会出现回调地狱。
:Jquery ajax是对原生XHR的封装,并添加了JSONP的支持.
: 提高了性能和速度:减少了客户端和服务器之间的流量传输,同时减少了双方响应的时间,响应更快,因此提高了性能和速度
: 针对MVC的编程,不符合现在前端MVVM的思想
: Ajax应用程序中的安全性较低(容易收到CSRF和XSS攻击),因为所有文件都是在客户端下载的
Fetch :Fetch是基于promise设计的。Fetch的代码结构比起ajax简单多了,参数有点像jQuery ajax。但是,fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。
:fetch默认不会带cookie,需要添加配置项
2
什么是函数防抖和函数节流?
函数防抖:对于频繁触发的事件,如果只希望其最后一次(或第一次)执行绑定函数的执行,则需要使用函数防抖。
函数节流:对于频繁触发的事件,希望其按照一定的频率进行绑定函数调用,则使用函数节流。
函数防抖和节流都可以通过settimeout实现。
3, 栈和队列的区别是什么?js中怎样实现栈结构?
栈和队列都是线型数据结构.
栈只有一个入口,同时也是出口,所以数据遵循先进后出,后进先出的规则。
队列一侧是入口,另一侧是出口,所以数据先进先出,后进后出。
Js中的数组可以实现栈和队列。Push和pop方法是一对栈操作,push和shift是一对队列操作。
4, Css文件中@import,@font-face,@keyframes,@media这4个关键字的作用是什么?
@import,导入另一个css文件,
@font-face,导入一个字体文件,
@keyframes声明一个关键帧动画,
@media声明一个媒体查询条件。