1、什么是防抖和节流?有什么区别?如何实现?
防抖:触发高频事件后N秒内函数只会执行一次,如果N秒高频事件再次被触发,则重新计算时间。(a时间触发,5秒内执行一次,但是第4秒的时候,又触发,时间又重置为5秒,待5秒后,触发事件)。
节流:高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率。(5秒内执行一次时间,在第4秒的时候,有触发了该事件,事件不会触发)。
思路:每次触发事件时,都会平拿不到那当前是否有等待执行的延时函数。
2、get传参长度的误区,get和post请求在缓存方面的区别
误区:通常以为get请求传参大小存在限制,而post请求的传参大小在2m以内;
注意:
http协议未规定get和post传参长度的限制。
get的最大长度因为浏览器和web服务器限制了uri的长度。
不同的浏览器和web服务器,限制的最大长度不一样。
如果要求支持ie,最大长度限制为2083byte(2M),如只支持谷歌浏览器,则最大长度为8182byte(8M)。
这一段扩大了认知。原来get不是协议限制了,是浏览器限制了;如果有一款浏览器不做长度限制,那就意味着,get请求不会受到限制;服务端限制uri;以下是nginx对uri请求体大小的限制:
http {
client_max_body_size 100m; # 限制请求体大小为100MB
}
get 和 post缓存的区别
get请求类似于查找过程,获取数据,不用每次都连接数据库,所以可以使用缓存。
post一般用于修改和删除工作,所以必须与数据交互,不能用缓存。
get 和 post请求方式的区别
get 产生一个tcp数据包,而post产生两个tcp数据包。
get请求,浏览器会将header和data一起发送出去,服务器相应200。
post请求,浏览器先发送header,服务端相应100;接着浏览器在大宋data,服务器相应200。
get和post请求差异很大,推荐在读取数据时,用get;修改和删除时,用post。
3、npm 安装机制,为什么输入npm install 就可以自动安装对应的模块?
1、发出npm install 命令,先查询本地的node_modules目录中是否存在指定模块;
如果模块存在,则不再重新安装;
如果模块不存在,从对应的registry查询模块压缩的地址;如果存在,就下载压缩包,存放到根目录下的.npm目录里;解压压缩包到当前项目的node_modules目录里;
主要阅读的文章是:
前端经典面试题 30道_前端面试题-CSDN博客