将vnode.tag转为真实dom的一点疑惑

来源:2-8 update

qq_飞越疯人院_1

2019-05-10

vnode.elm = vnode.ns 
	? nodeOps.createElementNS(vnode.ns, tag) 
	: nodeOps.createElement(tag, vnode)
将tag转为了真实的dom。

function createElement$1(tagName, vnode) { // esm版本下
  var elm = document.createElement(tagName);
  ...
  
  console.log(document.createElement(tagName));  
  // 如果是打印创建函数,显示的就是空的dom
  // 如: <div></div>
  
  console.log(elm) 
  // 如果打印的是赋值后的elm变量 就是完整的带属性和子元素的dom
  // 如:<div class='parent'><p>child</p></div>
  // 属性的create们或者insert方法都是在创建dom函数之后运行了
  // 这些属性是在哪里添加的了?
}
写回答

1回答

ustbhuangyi

2019-05-13

在 insert 之前会执行 invokeCreateHooks,它就会执行各个 module 的 create 钩子函数,对于 web 平台,它的 patch 函数会有很多 modules,在 platforms/web/runtime/modules 中定义,其中有处理 class 的,有处理 attrs 的,有处理 events 的等等。

1
3
qq_飞越疯人院_1
非常感谢!
2019-08-11
共3条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程