diff是什么?先说一下Vue的响应式。Vue的template会转换成render函数,render函数会返回VNode。VNode是一个js对象,是对真实Dom的映射。Vue会通过Object的defineProperty或者Proxy监听js对象的变更,当数据变更后,需要更新到真实Dom上。如果每次都从0开始重新渲染,那会有较大损耗,可能有部分组件根本不需要更新。为了提高渲染的效率,就需要找到一个最高效的渲染方式。diff就是为了对比新的VNode和旧VNode的差异,实现最小化的更新。在vue里面 diff 算法是通过patch函数来完成的,所以有的时候也叫patch算法。