# Vue中diff算法原理

Vue的diff算法是平级比较,不考虑跨级比较的情况。内部采用深度递归的方式 + 双指针的方式进行比较。

1.先比较是否是相同节点 key tag

2.相同节点比较属性,并复用老节点

3.比较儿子节点,考虑老节点和新节点儿子的情况

4.优化比较:头头、尾尾、头尾、尾头

5.比对查找进行复用

Vue3中采用最长递增子序列来实现diff优化

src/core/vdom/patch.js:700

src/core/vdom/patch.js:501 比较两个虚拟节点 patchVnode()

src/core/vdom/patch.js:404 比较两个虚拟节点 patchChildren()