1.react事件和dom事件有什么区别
如果DOM上绑定了过多的事件处理函数,整个页面响应以及内存占用可能都会受到影响。同时不同浏览器对于冒泡的实现并不一致,实现合成事件层有助于抹平不同浏览器之间的差别。
React并不是将click事件绑在该div的真实DOM上,而是在document处监听所有支持的事件,当事件发生并冒泡至document处时,React将事件内容封装并交由真正的处理函数运行。
- 合成事件的监听器是统一注册在document上的,且仅有冒泡阶段。所以原生事件的监听器响应总是比合成事件的监听器早
- 阻止原生事件的冒泡后,会阻止合成事件的监听器执行
2.闭包是什么
- 闭包就是可以访问外层函数变量的函数,其可以缓存一些数据,但是也会造成内存泄露
3.什么会导致内存泄露
- 闭包
- 全局变量
- 定时器
- 事件监听器
- Set和Map
4.webpack如何异步打包
5.tree-shaking是什么
Tree-Shaking 是一种基于 ES Module 规范的 Dead Code Elimination 技术,它会在运行过程中静态分析模块之间的导入导出,确定 ESM 模块中哪些导出值未曾其它模块使用,并将其删除,以此实现打包产物的优化。
6.react的diff是怎么实现的
7.虚拟DOM是什么,有什么用
- 虚拟DOM是react为了提升效率以及适配更多浏览器或平台而创建的一种数据结构
- 虚拟DOM是一种对象,里面主要由type(节点类型)、props(标签内部属性)、children(其内部的子节点)等信息构成