Vue生命周期函数

本文详细介绍了Vue应用的生命周期,从beforeCreate到created,再到beforeMount、mounted各个阶段的执行顺序和作用。在beforeCreate阶段,Vue开始处理事件绑定;created阶段,分析数据和模板绑定;接着判断是否存在template并结合数据生成函数;beforeMount执行前,模板变为函数;最后在mounted阶段,新DOM替换旧元素,完成页面渲染。

生命周期函数

生命周期函数:在某一时刻会自动执行的函数。

beforeCreate()

在你写好app=Vue.createApp()beforeCreate(),app.mount()之后,Vue就开始它内部的逻辑,首先它会考虑事件的绑定,当它进行完逻辑初始化之后就会开始beforeCreate()的生命周期函数。
如:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>

<body>
    <div id="root"></div>
</body>
<script>
```const app= Vue.createApp({
        data() {
            return{
                message:"hello world"
            }
        },
            beforeCreate()
            {
                console.log("befoeCreate");
            },   
        template: "<div>{{message}}</div>"
    });
    const t=app.mount('#root');
</script>

</html>

created()

在进行完beforeCreate()的生命周期函数后,就会开始分析数据以及模板间绑定的相关内容。然后执行第二个生命周期函数,名为created()周期函数。
如:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>

<body>
    <div id="root"></div>
</body>
<script>
```const app= Vue.createApp({
        data() {
            return{
                message:"hello world"
            }
        },
            beforeCreate()
            {
                console.log("befoeCreate");
            },   
            created()
            {
            console.log("created");
            },
        template: "<div>{{message}}</div>"
    });
    const t=app.mount('#root');
</script>

</html>

判断是否有template的存在

在代码走完created()周期函数之后,代码会考虑在之前的代码实例中是否存在template,如果存在则会把模板和数据进行结合,会把template后面的模板变成一个函数,在把数据和这个函数进行结合,才能把最终的内容给渲染出来。

beforeMount()

渲染出来之后,会执行下一个函数,为beforeMount().

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="root"></div>
</body>
<script>
const app= Vue.createApp({
        data() {
            return{
                message:"hello world"
            }
        },
            beforeCreate()
            {
                console.log("befoeCreate");
            },   
            created()
            {
            console.log("created");
            },
             beforeMount()
            {
                console.log("beforeMount");
            },
        template: "<div>{{message}}</div>"
    });
    const t=app.mount('#root');
</script>
</html>

mounted()

在模板变成函数与数据结合后会生成一个新的dom,用新的dom去替换掉上图id="root"的div标签。当把它替换后,页面就会呈现出自己想要的内容了。
此时会执行mounted()的执行函数。当mounted()执行完之后,页面中的hello world就展现出来了。
如:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="root"></div>
</body>
<script>
const app= Vue.createApp({
        data() {
            return{
                message:"hello world"
            }
        },
            beforeCreate()
            {
                console.log("befoeCreate");
            },   
            created()
            {
            console.log("created");
            },
             beforeMount()
            {
                console.log("beforeMount");
            },
             beforeMount()
            {
                console.log("beforeMount");
            },
        template: "<div>{{message}}</div>"
    });
    const t=app.mount('#root');
</script>
</html>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值