Appearance
生命周期解释
生命周期函数是一个hook,类似于好莱坞的设计模式,hook是同步调用,在Vue执行的各个时间点被调用,能获取到对应时间点VM的状态
开始
- 赋值_self, vm=this
- 合并extend和mixin选型
- 初始化proxy拦截器
- 初始化h函数
- 初始化组件上的事件监听器
js
Vue.prototype._init = function() {
initMixin() // 合并extend和mixin选项
stateMixin() // 初始化$set $watch $delete $get方法
eventMixin() // 初始化 $on $once $emit $forceupdate等方法
lifecycleMixin() // 初始化声明周期hook
renderMixin() // 初始化渲染函数h
}beforeCreate
- injection
- prop(options.propsData),解析父组件传入的初始值,建立响应式
- method
- data (使用observe 建立响应式)
- computed
- watch
- provider
created
- 编辑模板生成render函数
- vm.$el 赋值(但是还未替换dom)
beforeMount
执行render函数,生成vnode(这儿有个点,如果是组件是有el选项的,执行$mount,如果是其他的组件的子组件,会在组件的child = componentInstanceForVnode(), child.$mount()执行挂载)
根据vnode创建子组件
挂载vnode到dom中
