|
再结合 `mountComponent` 函数体的这句话:`vm.$el = el`,有的同学就会有疑问了,这里明明把 `el` 挂载元素赋值给了 `vm.$el`,那么 `vm.$el` 怎么可能引用的是 `template` 选项指定的模板的根元素呢?其实这里仅仅是暂时赋值而已,这是为了给虚拟DOM的 `patch` 算法使用的,实际上 `vm.$el` 会被 `patch` 算法的返回值重写,为了证明这一点我们可以打开 `src/core/instance/lifecycle.js` 文件找到 `Vue.prototype._update` 方法,如下高亮代码所示:
|
|
再结合 `mountComponent` 函数体的这句话:`vm.$el = el`,有的同学就会有疑问了,这里明明把 `el` 挂载元素赋值给了 `vm.$el`,那么 `vm.$el` 怎么可能引用的是 `template` 选项指定的模板的根元素呢?其实这里仅仅是暂时赋值而已,这是为了给虚拟DOM的 `patch` 算法使用的,实际上 `vm.$el` 会被 `patch` 算法的返回值重写,为了证明这一点我们可以打开 `src/core/instance/lifecycle.js` 文件找到 `Vue.prototype._update` 方法,如下高亮代码所示:
|