Vue.js入门(三)--Vue生命周期

首先上图
Vue.js入门(三)--Vue生命周期
上图其实已经将每个过程详细说明了,但是为了使自己能够更好的理解Vue的整个生命周期过程,这里我自己做了整理,如果您只需了解周期历程,那么接下来的内容您大可忽略,到此为止。

Vue实例在初始化时需要经历一系列过程,比如编译模板、渲染虚拟DOM树、将实例挂载到DOM上、设置数据监听和数据绑定等。在这些过程中也会运行一些钩子函数,允许开发者在不同阶段注入自己的代码。

在开始之前,首先要对这些专业术语有大致理解。

  1. 什么是生命周期。从 Vue 实例创建、运行、到销毁期间,总是伴随着各种各样的事件,而这些事件统称为 生命周期。
  2. 生命周期钩子。也就是生命周期事件的别名
  3. 生命周期钩子 = 生命周期函数 = 生命周期事件

主要的生命周期函数分类:

  1. 创建期间的生命周期函数
  • beforeCreate:在实例初始化之前执行,实例刚在内存中被创建出来,此时是一个空的实例对象,只有一些默认的生命周期函数和默认的事件, data 和 methods 都没有初始化。
  • created:data 和 methods 都已经初始化好了,如果要操作 data 和 methods ,最早只能在 created中。此时实力初始化完成,但是挂载尚未开始。
  • beforeMount:在模板编译完成后,在页面上挂载之前执行。也就是说内存中已经有了一个编译好的最终的模板字符串,并且渲染为内存中的 DOM ,当时并没有挂载到页面上去,页面上并没有将插值表达式中的字符串替换过来。
  • mounted:内存中的模板已经挂载到页面中,用户可以看到已经渲染好的页面。这是实例创建期间的最后一个生命周期函数,执行完 mounted 后实例就初始化完成,驻存在内存中等待调用进入到运行阶段,如果要操作 DOM 最早只能在 mounted 中完成。
  1. 运行期间的生命周期函数
  • beforeUpdate:当数据发生改变时执行,但是此时页面还没有被更新,页面和数据不同步。当执行beforeUpdate 时,页面中显示的数据仍是旧的,此时 data 数据是最新的,页面尚未和最新的数据保持同步
  • updated:数据更新后,内存中的 DOM 重新渲染并挂载到页面上,已经完成了 数据(Model) 到 视图(view) 的更新然后执行这个生命周期函数。updated 事件执行的时候,页面和data 数据已经保持同步,都是最新的
  1. 销毁期间的生命周期函数
  • beforeDestroy:当执行 beforeDestroy 钩子函数的时候,实例就已经从运行阶段进入到销毁阶段,实例身上所有的 data 和 methods 以及 filters ,directives … 都可以使用,还没有真正执行销毁阶段。
  • destroyed:实例已经完全被销毁了,实例身上所有的 data 和 methods 以及 filters ,directives … 都不可以使用了。

综上所述,总结如下:
如果需要在页面开始时就执行某些函数或方法,那么需要在 created 阶段调用该方法。updated 阶段的 新数据 和 页面是保持一致的,而在 beforeUpdate 钩子函数阶段 data 数据是更新的,但页面并未同步更新。