diff发生在虚拟DOM上。diff算法是在新虚拟DOM和老虚拟DOM进行diff(精细化比对),实现最小量更新,最后反映到真正的DOM上。
虚拟DOM并不是VUE专属的,很多其他框架也都有用到虚拟DOM。所谓的虚拟DOM其实是一个js对象。由于DOM是树形结构的,所以通过js对象表示虚拟DOM很容易。
比如它们都有create这个钩子方法,如将这些create钩子收集到一个数组内,需要在真实Dom上创建这些属性时,依次执行数组的每一项,也就是依次创建了它们。
很多同学在面试的时候都会被问到vue的虚拟DOM的diff以及patch的过程,如果这vue的源码了解不是很深刻,很难通过面试官的法眼,下面就来用通俗易懂的方式聊一聊Vue的patch过程。
因为diff算法是vuex,vuex以及react中关键核心点,理解diff算法,更有助于理解各个框架本质。说到「diff算法」,不得不说「虚拟Dom」,因为这两个息息相关。