跟面试官聊了挺多,问的问题是真的多...而且很细致。写几个没答好的问题吧..
ps:pc端和客户端同一用户获取的openid不一样
共同点:存储键值对的数据结构
不同点
左:Map 右:WeakMap
在不改变对象基础上,动态为对象添加行为或者功能。ES6引入语法糖"@"。装饰器可以分为三类:函数装饰器,类装饰器,类成员装饰器。是类继承的一种替代方案,比继承更简洁且易于管理。
@readonly
作用:loader加载器主要是负责加载各种非js文件并进行编译,打包和压缩;plugin插件则是补足webpack原本无法完成的一些其他任务,如打包优化,环境变量注入等
作用时间:loader在webpack打包文件前作用;plugin作用贯穿整个生命周期,监听webpack广播出的生命周期事件,使用webpack API实现功能扩展
使用方法:webpack配置文件中,loader在rules字段对不同类型文件进行解析规则指定;plugins则在plugins字段以新建插件实例的方式引入
两次,一次先发送header,返回100 continue,再发送body,返回200 OK。
将时间分片,隔一段时间插入一些DOM并做一次渲染。
调用多次document.body.append(),每次都要刷新页面一次。效率也就大打折扣了,而使用document_createDocumentFragment()创建一个文档碎片,把所有的新结点附加在其上,然后把文档碎片的内容一次性添加到document中,这也就只需要一次页面刷新就可(fragment存在于内存中)
根据列表项高度计算视窗内可渲染列表项数,动态维护需要展示的列表项,减少渲染压力。
https://codesandbox.io/s/virtuallist-1-rp8pi?file=/src/components/VirtualList.vue