Closed itboos closed 6 years ago
function Compile(el, vm) { this.$vm = vm; this.$el = this.isElementNode(el) ? el : document.querySelector(el); if (this.$el) { this.$fragment = this.node2Fragment(this.$el); // 上面的代码添加了一个this.$el 的文档碎片, this.init(); this.$el.appendChild(this.$fragment); // 这里把文档碎片添加到了父元素上, 为什么父元素不会出现两个一样的子节点呀? // 因为 this.$el 本来就有一些子节点, 后面有添加了一份 文档碎片节点, 这里感觉很疑惑,希望你帮忙解答一下,谢谢~ } }
@DMQ
@itboos node2Fragment 代码 这个方法里面会把 $el 里面的所有子节点,append到fragment里面去。注意:将一个在document上下文中的dom append到其他dom对象中的时候,这个dom会先在它原有的位置中移除掉,再添加到新的位置,也就是会先从$el中移除掉再添加到fragment,所以不会重复 详见这里
node2Fragment
明白了,谢谢
compile.js 里: