DMQ / mvvm

剖析vue实现原理,自己动手实现mvvm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

你好,有个问题想请教一下

itboos opened this issue · comments

compile.js 里:

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 本来就有一些子节点, 后面有添加了一份 文档碎片节点, 这里感觉很疑惑,希望你帮忙解答一下,谢谢~
    }
}
commented

@itboos
node2Fragment 代码
这个方法里面会把 $el 里面的所有子节点,append到fragment里面去。注意:将一个在document上下文中的dom append到其他dom对象中的时候,这个dom会先在它原有的位置中移除掉,再添加到新的位置,也就是会先从$el中移除掉再添加到fragment,所以不会重复 详见这里

明白了,谢谢