虚拟DOM是一种编程概念,就是一颗虚拟的Javascript对象树,它将真实的dom转换为一个个js对象,保存在内存中
虚拟DOM通过js模拟网页文档节点,生成虚拟DOM树,然后进一步生成真实的DOM树,渲染到页面,如果内容发生改变,React会重新生成一棵全新的虚拟DOM树,与前边的旧的虚拟DOM进行比较,通过diff算法,将变化的部分打包成patch,再次应用到真实DOM中,重新渲染页面。
总结 :
- React 通过制定大胆的 diff 策略,将 O(n3) 复杂度的问题转换成 O(n) 复杂度的问题;
- React 通过分层求异的策略,对 tree diff 进行算法优化;
- React 通过相同类生成相似树形结构,不同类生成不同树形结构的策略,对 component diff 进行算法优化;
- React 通过设置唯一 key的策略,对 element diff 进行算法优化