生命周期
每一个实例和组件都会经历一个完整的生命周期,分为三个阶段
1.初始化阶段
2.运行中(挂载数据)
3.销毁
生命周期的过程
1.一个组件和实例,通过new Vue()来创建,开始生命周期。
2.实例化之后,beforeCreate钩子函数会立马执行,此时还没有挂载数据,再这个函数里面获取不到数据,同时里面的真实DOM节点也没有挂在出来,为NULL。
3.在挂载数据(注:没有挂载dom节点)和绑定事件后,会执行created钩子函数,此时数据已经挂载完毕,在这里可以获取数据和更改数据。但是在这里不会触发其他的钩子函数。可以用来做ajax请求和事件绑定。
4.执行完created钩子函数后,就开始找组件和实例各自的模板,让其编译成虚拟DOM,放入rander函数 进行初始化渲染,beforeMount钩子函数中虚拟DOM已经创建出来,但是数据还没有渲染,在这里不会触发其他钩子函数,可以用来做请求和事件绑定。
5.在rander函数渲染出真实DOM,开始执行 mounted函数,在这里数据已经挂载好,dom节点也渲染出来了,可以做一些实例化相关的事情。
6.在组件和实例的数据发生改变的时候,会立即执行beforeUpdate函数,然后会重新创建一个虚拟DOM与旧的虚拟DOM用diff方法相对比,然后在重新渲染。
7.当更新完成后,会执行updated函数,此时数据,DOM都更新完成,可以对新的DOM.
8.当经过某种途径调用$destroy方法后,立即执行beforeDestroy钩子函数,此时实例还没有销毁。
9.在实例销毁之后会立即执行destroyed钩子函数,此时Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用,只剩下一个DOM空壳,可以在这里做完善工作。