vue实例的声明周期

new Vue()

创建实例

    ↓

初始化事件和生命周期

    ↓

beforeCreate

    ↓

初始化injection和reactivity

    ↓

created

    ↓

有没有“el”选项,没有等待vm.$mount(el)调用,有则往下

    ↓

有没有template选项?有的话把template编译成render function,没有的话把外部el挂载点的html当作模板

    ↓

beforeMount

    ↓

执行render function,#el的内容挂载到dom中

    ↓

mounted

 

当data发生改变时,先触发beforeUpdate再重新渲染虚拟 dom,并通过 diff 算法对比 vnode 节点差异更新真实,最后触发updated

组件销毁的时候(可以通过调用app.$destroy()模拟),先触发beforeDestroy,销毁数据监听,子组件和解除事件监听,最后触发Destroyed(实例销毁后虽然 dom 和属性方法都还存在,但改变他们都将不再生效)

renderError rander方法异常的时候会触发(开发环境)

errorCaptured  render方法异常的时候会触发(可以向上冒泡,生产环境也试用)

 

posted @ 2019-09-08 23:57  AllenZhang_(*^▽^*)  阅读(153)  评论(0编辑  收藏  举报