前端应用_Vue_解释生命周期图

组建的生命周期 一直都在围绕了 三个部分

  1. 页面元素展示
  2. 内存模版 , 内存也可以渲染dom树,此时只是渲染了模版并没有真正挂载到页面。
  3. vue 的mode 也就是 vue 的数据层。比如 数据层的数据 改变了,就意味着 页面渲染了吗, 答案绝对不可能的, 也需要重新渲染一份内存dom树,然后再挂载到页面去渲染。

流程图为如下:

beforeCreate 阶段

此阶段只是初始化vue对象,获取对象的结构,属于预解析下,并没有获取里面的数据。

created 阶段

获取里面的数据,初始化数据结构。 里面的data 和方法全部有了。如果你想操作数据层就需要在这个阶段操作。

beforeMount 阶段

次阶段只是在内存中渲染一个dom树,并没有挂载到页面, 只是挂载页面的初始化阶段,在内存中已经准备好了,

mounted 阶段

把内存中的dom树拿过来 放到页面去渲染 ,真正的改变了页面显示。

beforeUpdate 阶段

此时 数据层的数据已经改变了, 但是页面上还是老的, 页面没有 和最新的数据同步。

Updated 阶段

数据层改不了, 也是一样需要渲染一个内存dom树, 然后把内存dom 树同步到页面上,也就是完成了 mode >view的更新。

beforeDestroy 阶段

这个阶段也就是 从运行阶段 过度到 销毁阶段, 但是这个阶段只是初始化一下, 已经准备销毁 data,methods vue里的自定指令, 但是也是可以用,

destroyed 阶段

此阶段已经完成了销毁, 所有的数据层的数据 全部不能用,这个对象在地球上已经不存在了。

请看示例代码如下,结合打印的结果理解:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
     <link href="http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" >

   <link href="https://cdn.bootcss.com/flat-ui/2.3.0/css/flat-ui.min.css" rel="stylesheet">
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">

    </script>
</head>
<body>
<div id='p' >

        <input type="button" value="button" @click="show1">
        <p id="pp">  {{msg}}</p>


</div>

<div>

    <script>
          var vue=new  Vue(
            {
                el: '#p',
                data: {
                    msg:'突然好想你',
                },
                methods: { 
                    show1: function(){
                      
                        this.msg="这个已经代表我更新了,请注意,不再是以前的我了"
                    },
                    show: function(){
                        console.log("我是一个方法已经被调用了")
                        
                    }         
                }, 
                beforeCreate(){
                    console.log("创建之前的data message,beforCreated显示的为:>>>"+this.msg)
                    console.log("创建之前的方法,beforeCreated显示的为:>>>"+this.show)
                    //创建之前的data message,beforCreated显示的为:>>>undefined
                    //创建之前的方法,beforeCreated显示的为:>>>undefined
                },
                created(){
                    console.log("创建之前的data message,created显示的为:>>>"+this.msg)
                    this.show()
                    //创建之前的data message,created显示的为:>>>突然好想你
                    // 我是一个方法已经被调用了

                },
                beforeMount(){
                    console.log("beforeMount 看是否能取到值,结果为:"+document.getElementById("pp").innerText)
                    //beforeMount 看是否能取到值,结果为:{{msg}}
                },
                mounted(){
                    console.log("Mount 看是否能取到值,结果为:"+document.getElementById("pp").innerText)
                    //Mount 看是否能取到值,结果为:突然好想你
                },
                beforeUpdate(){
                    console.log("beforeUpdated页面的值,结果为:"+document.getElementById("pp").innerText)
                    console.log("beforeUpdated model 里面的值为"+ this.msg)
                    //beforeUpdated页面的值,结果为:突然好想你
                     //beforeUpdated model 里面的值为这个已经代表我更新了,请注意,不再是以前的我了
                },
                updated(){
                    console.log("Updated页面的值,结果为:"+document.getElementById("pp").innerText)
                    console.log("update model 里面的值为"+ this.msg)\
                    //Updated页面的值,结果为:这个已经代表我更新了,请注意,不再是以前的我了
                    //update model 里面的值为这个已经代表我更新了,请注意,不再是以前的我了
                },

            }
        )
    </script>
</div>
</body>
</html>


再看不明白请看这个生命周期图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值