虚拟DOM
虚拟DOM的本质来说就是一个JS对象,Vue会把虚拟的DOM解析为JS的对象
还可以这样理解:虚拟DOM 本质上就是在 JS 和 DOM 之间做了一个缓存。可以类比 CPU 和硬盘,既然硬盘这么慢,我们就在它们之间加个缓存:既然 DOM 这么慢,我们 就在它们 JS 和 真实DOM 之间加个缓存。CPU(JS)只操作内存(虚拟DOM),最后的时候再把变更写入硬盘(DOM)
相对于真实的DOM而言,大大提高了渲染能力,我们在大量的,频繁的数据更新下,可以对视图进行更合理的更高效的更新(不会引起整个DOM树的重绘和重排)
DIFF算法
依据key逐个遍历newVdom的节点,找到它在oldVdom中的位置,如果找到了就移动对应的DOM元素,如果没找到说明是新增节点,则新建一个节点插入。遍历完成之后如果oldVdom中还有没处理过的节点,则说明这些节点在newVdom中被删除了,删除它们即可