Vue的生命周期

1.首先整体阐述一下vue的生命周期:Vue的生命周期就是从其被创建到被销毁的过程,其中包含了开始创建、初始化数据、编译模板、挂载DOM(渲染),渲染->更新>渲染、销毁(卸载)等一系列过程。
2.主要的钩子函数都担负着自己的职责,较为常用的就是created和mounted,可以在函数中编写相关的业务逻辑。
3.vue中哪个生命周期函数发起异步请求。(1.在created钩子函数触发时,组件的data数据,通过路由注入的数据已经具备,此时可以使用这些数据发送ajax请求 2.在mounted钩子函数中发起也可以,但是相对比created稍微迟了一些.3.如果不需要依赖任何数据发起请求,那么在beforeCreate发起也可以)
4.指令的原理概述:在模板解析的阶段,我们再讲指令解析到AST,然后使用AST生成代码字符串的过程中实现某些内置指令的功能,最后在虚拟DOM渲染的过程中触发自定义指令的钩子函数使指令生效.
钩子函数

beforeCreate

在实例初始化之后,数据观测和事件、生命周期初始化配置之前被调用。

created

实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测,属性和方法的运算,事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。

beforeMount

在挂载开始之前被调用:相关的 render 函数首次被调用,此时有了虚拟DOM。

mounted

el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子,渲染为真实DOM。

beforeUpdate

在数据更新之前时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。

updated

由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。

当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。

值得注意的是:该钩子在服务器端渲染期间不被调用。

beforeDestroy

实例销毁之前调用。此时,实例仍然是可用的。

destroyed

vue 实例销毁后调用。调用后,vue 实例指示的所有东西都会解绑,所有的事件监听器会被卸载移除,所有的子实例也会被销毁。 

值得注意的是:该钩子在服务器端渲染期间不被调用。

进一步进行说明:
创建阶段:BeforeCreate、created、BeforeMount、mounted
(1) BeforeCreate : data、methods 初始化之前调用
(2)created : data、methods 成功初始化 调用
(3)BeforeMount : 挂载到 div 之前调用
(4) mounted : 成功挂载之后调用
(所以如果要通过某些插件操作页面上的DOM节点,最早要在 mounted 中进行)

(只要执行完了mounted,就表示整个 Vue 实例已经初始化完成了;此时已经从创建阶段,进入到了运行阶段)

运行阶段:beforeUpdate 和 updated
(1) beforeUpdate : 还未同步
(2) updated :执行的时候,页面和data数据已经保持同步了
(这俩事件,会根据 data 数据的变化,有选择性地触发 0 次到多次)

销毁阶段:beforeDestroy 和 destroyed
(1) beforeDestroy : 实例身上所有的 data 和所有的methods 以及过滤器、指令等,都处于可用状态
(2) destroyed : 上述都已经不可用





全部评论

相关推荐

青春运维少年不会梦到...:实习大王
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务