前言
在前端开发的时候,对于生命周期的使用来说是非常重要的,对于程序生命周期的详细理解也是开发者必备技能,生命周期在程序开发的时候也是非常重要的知识点,不管是哪种语言,生命周期都是重中之重的关键点。那么本篇博文就来分享一下在前端开发的时候基于Vue的于生命周期钩子函数相关的知识点。
Vue实例的生命周期从构建到销毁的过程,大概经过四个阶段:初始化、模版编译、挂载、销毁。在Vue实例的生命周期中,钩子函数就是指在特定的时间节点会自动执行调用的函数。下面由一个示例代码来演示一下Vue实例的生命周期的从构建到销毁的过程。
示例:
<body>
<div id="app">
<h3 id="h3">{{message}}</h3>
<input type="button" value=“更改message" @click="message=‘Hi’”>
</div>
<script>
var vm = new Vue({
el:'#app',
data:{
message:' hello world’ ,
},
methods:{
show(){
console.log(‘+++show’);
}
},
一、组件创建阶段的4个钩子函数
1、第一个生命周期函数,表示实例完全被创建之前,会执行该函数
在beforeCreate生命周期函数执行的时候,data 和 methods 中的数据还没有被初始化。
beforeCreate() {
console.log(this.message); //undefind
this.show() ; //is not defind
},
2、第二个生命周期函数,表示实例进行初始化的时候,会执行该函数
在 created 中,data和methods 都已经被初始化完成。如果需要调用methods 中的方法,或操作data中的数据,最早只能在created中进行操作。
created() {
console.log(this.message); // hello world
this.show(); //执行了show方法
},
3、第三个生命周期函数,表示模板已经在内存中编译完成,但是还未把模板渲染到页面中
在beforeMount执行的时候,页面中的元素没有被真正替换,只是之前写入的一些模板字符串。
beforeMount() {
console.log(document.getElementById('h3').innerText) //{{message}}
},
4、第四个生命周期函数,表示内存中的模板已经真实的挂载到页面中,用户可以看到已经渲染好的页面
mounted是实例创建期间阶段的最后一个生命周期函数,当执行完 mounted 之后就表示实例已被完全创建,此时如果没有其它操作的话,这个实例就在内存中不动了。
mounted() {
console.log(document.getElementById('h3').innerText) //hello world
},
二、组件运行阶段的2个钩子函数
5、第五个生命周期函数,表示界面还没被更新,但是数据确定已经更新
当执行 beforeUpdate 的时候,页面中的显示的数据还是未更新的旧数据,但此时的data 数据是最新的,页面的数据尚未和最新的数据保持同步更新。
beforeUpdate() {
console.log('界面上的内容'+ document.getElementById('h3').innerText) //没有执行,因为数据没改变
console.log('data中message数据:' + this.message)
},
6、第六个生命周期函数,表示界面的数据已经更新
updated事件执行的时候,页面和 data 数据已经保持一致了,都是最新的数据。
updated() {
console.log('界面上的内容'+ document.getElementById('h3').innerText) //Hi
console.log('data中message数据:' + this.message) //Hi
},
三、组件销毁阶段的2个钩子函数
7、beforeDestroy 生命周期是实例销毁前,在这个函数内还是可以操作实例的。
8、销毁完成后,再执行 destroyed,此时已不能再操作实例了。生命周期整个流程到此时就已经全部结束了。
})
</script>
</body>
附:组件选择的顺序
组件选项应该有统一的顺序,具体的顺序如下所示:
export default {
name: '',
mixins: [],
components: {},
props: {},
data() {},
computed: {},
watch: {},
created() {},
mounted() {},
destroyed() {},
methods: {},
};
最后
通过上面内容的分享,可以很好的知道前端开发的程序的生命周期,也详细的知道了对应的生命周期钩子函数的使用,尤其是对于初级开发者来说,更应该熟练掌握对应的知识点,这里不再赘述。