每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数。
( 1 )new Vue()
创建了一个Vue组件实例,进入创建过程。
(2)Init Event &LifeCycle
初始化组件事件及生命周期函数
(3)beforeCreate
创建阶段:第一个生命周期函数,这里data数据、method方法,el实例都没办法被访问到
(4)Init injections & reactivity
这个阶段初始化data数据、method方法。
(5)created
创建阶段:第二个生命周期函数,此时可以访问data数据、method方法,但是无法访问el实例,因为页面还未被渲染,
通常情况:我们在这个生命周期函数中去发送ajax请求去请求后台数据。
(6)编译阶段
把数据获取到,并且解析执行模板结构,在内存中将模板页面渲染出来。
(7)beforeMount
创建阶段:因为内存中存着渲染之后的模板结构,所以beforeMount可以访问到el对象,但是el对象实例中并未将数据挂载到模板结构上,
此时页面上显示的只是模板页面。
(8)Create vm.$el and replace with it
这是将内存中的模板结构替换到页面上。
(9)mounted
创建阶段: 创建阶段的最后一个生命周期函数,此时页面真正渲染到浏览器中,
第三方插件的初始化必须在这个步骤里完成。
(10)运行阶段(更新阶段)
当data数据变化,页面更新的步骤:
1、拿到最新的数据 :beforeUpdate
2、根据最新数据在内存中重新渲染DOM树:virtual DOM re-render
3、把旧的DOM树移除,替换成新的DOM树;virtual DOM patch
updated:页面是最新的,数据也是最新的
(11)销毁阶段:
beforeDestroy:组件还未被销毁,data, method el都是可以被访问的,可以在这里清除定时器。
Destroyed: 组件完成销毁。