Open shalldie opened 4 years ago
diff优化神评,面试进阶题目就是这个。
请问为什么要删除old dom上的节点? 每次更新不应该是有一棵新的VDOM树吗?之后更新到real dom的时候直接用新的VDOM就好了吧? 不太理解为什么要删除old dom上的节点
@xluo62 请问为什么要删除old dom上的节点? 每次更新不应该是有一棵新的VDOM树吗?之后更新到real dom的时候直接用新的VDOM就好了吧? 不太理解为什么要删除old dom上的节点
你是指的 diff 中的 removeVnodes
这部分吗?
diff 的目的是为了复用节点,如果直接全量应用新 vdom 就失去了复用目的。
本质是,oldVDom
如果想更新为 newVDom
,需要怎么对自身dom进行改造,而不是根据 newVDom
去生成dom。
因此,如果 newVDom
比 oldVDom
少一个节点,那么 oldVDom
应该删除一个 real dom 去适配到 newVDom
。
看了 mini-mvvm 的 compile 部分,貌似直接用dom来解析的?
这样简单是简单,如果想在服务端跑是不是只能换正则?
this issue is made by: https://github.com/shalldie/vue-git-comment