1、什么是虚拟DOM:
虚拟dom是一种用于提成web应用性能的技术,最初由react引入,现已被多种前端框架(vue,preact等)采用,它的核心思想是通过一个轻量级的JavaScript对象(虚拟树也叫AST抽象语法树),来模拟真是的DOM结构,并在数据变化时,高效的更新DOM。
- 虚拟DOM是一个JavaScript对象。
它是对真是DOM的抽象表示,包含标签(tag),属性(props), 子节点(children)等信息。// 真实 DOM <div id="app"><h1>Hello</h1></div> // 对应的虚拟 DOM { tag: 'div', props: { id: 'app' }, children: [{ tag: 'h1', children: 'Hello' }] }
2、diff算法
- 层级比较
同层级比较
递归子树比较
节点属性比较
元素类型比较- key的作用
提升比较效率
形成复用
算法时间复杂度O(n)
3、面试回答术语:
虚拟DOM解决dom 频繁 reflow问题
diff算法解决复用和操作问题