vue实例挂载流程是,$mount->mountComponent->定义updateComponent->new Watcher->执行getter即执行updateComponent,执行_render->执行update
执行render,就是执行vnode = render.call(vm._renderProxy, vm.$createElement),即执行$createElement即执行createElement即执行_createElement
后面会根据tag类型做一次判断,如果是组件对象,则走到createComponent逻辑
执行createComponent函数,先执行baseCtor = context.$options._base,这个其实就是Vue,_base是再global-api下的index文件里进行赋值的
后续在通过mergeOption到$options上,所以他就是Vue
后续执行 Ctor = baseCtor.extend(Ctor),Vue.extend也是定义在golbal-api下的,cachedCtors主要是对组件做缓存,相同组件不同地方多次引用,可以用缓存,然后定义sub,做了一个继承,使组件拥有Vue相同的方法,然后在合并options
然后createComponent继续往下走,执行installComponentHooks,这个主要是填加了一些钩子函数,以后patch会用到,然后后续创建组件Vnode,我们可以看到组件Vnode,第3、4、5参数为空,即children、text、elm为空,但是多了componentOptions参数