虚拟dom本质上来说是一个javascript对象,它是对于真实dom的一层抽象描述,它 存在我们的应用内存中,非常的轻量,操作成本远低于真实dom;
主要解决了频繁操作真实dom导致的性能瓶颈问题,因为操作真实dom会引起浏览器的重绘和重排,这样的操作开销是非常大的。虚拟dom通过在内存中进行diff算法的比较,找出最小差异,通过batching批量更新,一次性的或者分批的将这些变更应用到真实dom上,这样就减少了真实dom的操作次数,有效的提高了应用的渲染性能和响应速度
核心工作原理:当state发生变化时,会基于新的state生成新的虚拟dom,然后通过react的diff算法,把新旧虚拟dom进行比较,找出两者的差异,最后将diff转化为具体的dom操作,并应用到真实dom上。
优点:跨平台开发,ssr