组件化流程
initAssetRegisters:组件注册<br>src\core\global-api\assets.js<br>
第一步:如果传入的配置中有name,则将name作为当前组件的名字,没有则将传进来的第一个参数id作为当前组件的名字<br>
第二步:将组件的配置对象转换为组件的构造函数
第三步:将组件注册到components选项中<br>
入口:updateComponent<br>src\core\instance\lifecycle.js:189<br>
_update
_render<br>
_render<br>src\core\instance\render.js:69<br>
$createElement:传入_render函数执行时的参数,即h<br>
initRender:声明$createElement<br>src\core\instance\render.js:19<br>
createElement
createElement:h<br>src\core\vdom\create-element.js:28<br>
_createElement
_createElement:vnode生成<br>src\core\vdom\create-element.js:47<br>
createComponent
createComponent:返回自定义组件的vnode<br>src\core\vdom\create-component.js:101<br>
installComponentHooks<br>
installComponentHooks:给data中添加一些钩子函数,未来等待patch时候调用<br>src\core\vdom\create-component.js:226<br>
componentVNodeHooks
componentVNodeHooks:一些钩子函数<br>src\core\vdom\create-component.js:36<br>
init 实例化和挂载
prepatch 打补丁之前
insert 插入<br>
destroy 销毁
init:实例化和挂载<br>
createComponentInstanceForVnode:创建组件实例
$mount:组件挂载
createElm:组件或者元素创建<br>src\core\vdom\patch.js:125<br>
createComponent
createComponent:自定义组件创建过程<br>src\core\vdom\patch.js:210<br>