Vue生命周期及钩子

一、前言
Vue是一个专注于视图层的一个响应式的前端框架,而且使用起来特别简单、灵活以及横向扩展性极高,跨平台,目前也广受前端开发人员以及企业的喜爱,从某种程度上能够达到高效率开发生产

二、Vue中的MVVM的框架模式
在这里插入图片描述

  1. 我们所说的MVVM框架其实就是数据(model)、视图(view)、数据处理(vm),这三者之间的关系也就组成了MVVM框架,而且各层负责各自的功能,实现分离效果,层次分工化更加明确
  2. view层主要代码就是我们前端的DOM元素
  3. vm层就是负责数据处理也就是Vue实例中的方法调用,对于view层—>model层经过vm处理然后交给model层进行存放,对于model层—>view层取出数据并由vm处理交给DOM进行页面渲染
  4. Model层主要就是存放页面中的单独数据

三、Vue生命周期及钩子介绍

首先参考官方文档给出的对应生命周期示例图
在这里插入图片描述

  • 对应的beforeCreate()、created()、beforeMount()、Mounted()、beforeUpdate()、updated()、beforeDestroy()、destroyed()的这些函数都是在Vue实例化创建过程中以及创建完成内置的钩子函数,每个钩子函数对应着Vue实例在初始化及之后不同阶段可以进行调用处理一些事件函数
  • beforeCreate函数在初始化阶段形成,这个阶段对应的Vue中的元素绑定(el),data()还未被初始化到
var vm = new Vue({
    el:"#app",
    data:{
        msg:"hello henry!"
    },
    beforeCreate(){
        console.log("beforeCreate方法被执行");
        console.log(this.msg);
    }
})

在这里插入图片描述

  • created函数到这个阶段对应的el、data数据已经注入到Vue实例中,可以进行调用,同上进行逻辑操作即可
created(){
        console.log("created方法被执行");
        console.log(this.msg);
    }
  • created函数之后回去判断在实例中是否有指定的模板引擎绑定el,若无则使用el指定的标签域来作为模板引擎

  • beforeMount函数在模板引擎还未挂在到浏览器的时候就会调用,这个时候浏览器是看不到浏览器展示内容的

  • mounted函数阶段该浏览器DOM已经展示基本就形成了Vue实例对象的阶段

  • 当检测到页面数据被改动的时候会到beforeUpdate及update两个阶段,一个变化前一个变化后

  • beforeUpdata方法调用阶段,data数据被改变但页面数据还是原始状态

  • 当虚拟DOM重新渲染到页面后执行Updated方法,data数据与页面数据一致

  • 运行到beforeDestroy方法时,Vue对象准备销毁过程,但是还未被销毁对应的方法属性能够正常使用

  • destroyed对象被销毁生命周期结束

详细内容参考Vue官方文档:https://cn.vuejs.org/v2/guide/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue生命周期是指Vue实例从创建到销毁的整个过程,而钩子函数则是在不同的生命周期阶段执行的函数。Vue提供了一系列的钩子函数,用于在特定的生命周期阶段执行相应的操作。 以下是Vue生命周期钩子函数及其对应的生命周期阶段: 1. beforeCreate:在实例初始化之后,数据观测和事件配置之前被调用。 2. created:在实例创建完成后被立即调用。此时实例已完成以下配置:数据观测、属性和方法的运算、watch/event事件回调。然而,挂载阶段还没开始,$el属性目前不可见。 3. beforeMount:在挂载开始之前被调用。相关的render函数首次被调用。 4. mounted:el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子函数。此时,实例已完成以下配置:编译模板、把data里面的数据和模板生成html。注意此时还没有挂载到页面上。 5. beforeUpdate:数据更新时调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子函数中对更新之前的状态做一些操作。 6. updated:由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子函数。可以执行依赖于DOM的操作,但是要避免更改数据。 7. beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。 8. destroyed:实例销毁后调用。此时,所有的事件监听器被移除,所有的子实例也被销毁。 下面是一个简单的示例,演示了Vue生命周期钩子函数的使用: ```javascript new Vue({ el: '#app', data: { message: 'Hello Vue!' }, beforeCreate: function() { console.log('beforeCreate'); }, created: function() { console.log('created'); }, beforeMount: function() { console.log('beforeMount'); }, mounted: function() { console.log('mounted'); }, beforeUpdate: function() { console.log('beforeUpdate'); }, updated: function() { conso.log('updated'); }, beforeDestroy: function() { console.log('beforeDestroy'); }, destroyed: function() { console.log('destroyed'); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值