正好我前几天做着玩做了这个,也是嫌虚拟 dom 麻烦,所以我在第一步渲染 html 的时候就把所有绑定了数据的 dom 节点拿了出来,单独传给 observer,在 observer set 的时候给所有传进来的节点改变一下数据,就实现了局部刷新。不过这么实现并不好,而且局限性大,只能说是比较简单的能做着玩玩。随便写个伪代码给你吧 Observer(elements, instruct) { Object.defineProperty(data, instruct, { set(newVal) { elements.map((el) => { el.nodeValue = newVal }) } }) }
简单的说是, 比较原来dom节点数据和现在数据的不同, diff 算法, virtual dom的优势可能就在这里, 直接比较数据就能得到diff的地方, 然后更新dom, 要局部更新, diff算法绕不开把
正好我前几天做着玩做了这个,也是嫌虚拟 dom 麻烦,所以我在第一步渲染 html 的时候就把所有绑定了数据的 dom 节点拿了出来,单独传给 observer,在 observer set 的时候给所有传进来的节点改变一下数据,就实现了局部刷新。不过这么实现并不好,而且局限性大,只能说是比较简单的能做着玩玩。随便写个伪代码给你吧