生命周期图
代码
<body>
<div id="app">
<input type="button" value="修改msg" @click="msg='No'">
<p id="h3">{{msg}}</p>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
msg: '欢迎学习Vue',
},
methods: {
},
beforeCreate(){
// 第一个生命周期函数,表示实例完全被创建出来之前,会执行它
// console.log(this.msg)
// 在 beforeCreate 生命周期函数执行的时候,data 和 methods 中的数据都还没有被初始化
},
created(){
// 这是遇到的第二个生命周期函数
console.log(this.msg)
// 在 created 中,data和methods都已经被初始化好了
// 如果要调用 methods 中的方法,或者操作 data 中的数据,最早只能在created中操作
},
// 这里表示 Vue 开始编辑模板,把 Vue 代码中的那些指令进行执行,最终,在内存中生成一个编译好的最终模板字符串,
// 然后,把这个模板字符串渲染为内存中的DOM,此时只是在内存中,渲染好了模板并没有把模板挂载到真正的页面中去
beforeMount(){
// 第三个生命周期函数,表示模板已经在内存中编辑完成了,但是尚未把模板渲染到页面中
console.log(document.getElementById('h3').innerText)
// 在 beforeMount 执行的时候,页面中的元素,还没有被真正替换过来,只是之前写的一些模板字符串
// 此函数执行的时候,模板已经在内存中编译好了,但是尚未挂载到页面中去,此时,页面还是旧的
},
// 将内存中编译好的模板,真实的替换到浏览器页面中去
mounted(){
// 第四个生命周期函数,表示内存中的模板,已经真实的挂载到了页面中去,用户已经可以看到渲染好的页面了
console.log(document.getElementById('h3').innerText)
// mounted 是 实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例就已经被完全创建好了,
// 此时如果没有其他操作的话,这个实例就静静的躺在内存中一动不动
},
// 接下来的是运行中的两个事件
beforeUpdate(){
// 这时候表示我们的界面还没有被更新【数据被更新了吗?数据被更新了】
console.log('界面上元素的内容是:' + document.getElementById('h3').innerText)
console.log('data中的msg数据是:' + this.msg)
// 当执行 beforeUpdate 的时候,页面中显示的数据还是旧的,此时 data 数据是最近的,页面尚未和最新的数据保持同步
},
updated(){
console.log('界面上元素的内容是:' + document.getElementById('h3').innerText)
console.log('data中的msg数据是:' + this.msg)
// updated 事件执行的时候,页面和data数据已经保持同步了,都是最新的
}
// 当执行beforeDestroy钩子函数的时候,Vue实例已经从运行阶段,进入到销毁阶段;此时实力身上所有的 data 和所有的 methods,以及过滤器,指令。。。都处于可用状态,还没有真正执行销毁的过程
// 当执行 destoryed 函数的时候,组件已经完全销毁了,此时组件中的属性、方法、指令、过滤器。。。都已经不可用了
})
</script>
</body>
beforeCreate()
:第一个生命周期函数,表示实例完全被创建出来之前会执行它,在beforeCreate
生命周期函数执行的时候,data
和methods
中的数据都还没有被初始化created()
:第二个生命周期函数,在created
中,data
和methods
都已经被初始化好了,如果要调用methods
中的方法,或者操作data
中的数据,最早只能在created
中操作。beforeMount()
:第三个生命周期函数,表示模板已经在内存中编辑完成了,但是尚未把模板渲染到页面中,此函数执行的时候,模板已经在内存中编译好了,但是尚未挂载到页面中去,此时页面还是旧的mounted()
:第四个生命周期函数,表示内存中的模板,已经真实的挂载到了页面中去,用户已经可以看到渲染好的页面了,mounted
是 实例创建期间的最后一个生命周期函数,当执行完mounted
就表示,实例就已经被完全创建好了,此时如果没有其他操作的话,这个实例就静静的躺在内存中一动不动beforeUpdate()
:当执行beforeUpdate
的时候,页面中显示的数据还是旧的,此时 data 数据是最新的,页面尚未和最新的数据保持同步updated()
:updated
事件执行的时候,页面和data数据已经保持同步了,都是最新的beforeDestroy()
:当执行beforeDestroy
钩子函数的时候,Vue实例已经从运行阶段,进入到销毁阶段;此时实力身上所有的 data 和所有的methods
,以及过滤器,指令。。。都处于可用状态,还没有真正执行销毁的过程destoryed()
:当执行destoryed
函数的时候,组件已经完全销毁了,此时组件中的属性、方法、指令、过滤器。。。都已经不可用了