Skip to content

生命周期解释

生命周期函数是一个hook,类似于好莱坞的设计模式,hook是同步调用,在Vue执行的各个时间点被调用,能获取到对应时间点VM的状态

开始

  1. 赋值_self, vm=this
  2. 合并extend和mixin选型
  3. 初始化proxy拦截器
  4. 初始化h函数
  5. 初始化组件上的事件监听器
js
Vue.prototype._init = function() {
    initMixin()  // 合并extend和mixin选项
    stateMixin()  // 初始化$set $watch $delete $get方法
    eventMixin() // 初始化 $on $once $emit $forceupdate等方法
    lifecycleMixin() // 初始化声明周期hook
    renderMixin() // 初始化渲染函数h
}

beforeCreate

  1. injection
  2. prop(options.propsData),解析父组件传入的初始值,建立响应式
  3. method
  4. data (使用observe 建立响应式)
  5. computed
  6. watch
  7. provider

created

  1. 编辑模板生成render函数
  2. vm.$el 赋值(但是还未替换dom)

beforeMount

  1. 执行render函数,生成vnode(这儿有个点,如果是组件是有el选项的,执行$mount,如果是其他的组件的子组件,会在组件的child = componentInstanceForVnode(), child.$mount()执行挂载)

  2. 根据vnode创建子组件

  3. 挂载vnode到dom中

mounted