实例code:html
<div id="app">
<h1>{{message}}</h1>
</div>
var vm = new Vue({
el: '#app',
data: {
message: 'Vue的生命周期'
},
beforeCreate: function() {
console.group('------beforeCreate建立前状态------');
console.log("%c%s", "color:red" , "el : " + this.$el); //undefined
console.log("%c%s", "color:red","data : " + this.$data); //undefined
console.log("%c%s", "color:red","message: " + this.message)
},
created: function() {
console.group('------created建立完毕状态------');
console.log("%c%s", "color:red","el : " + this.$el); //undefined
console.log("%c%s", "color:red","data : " + this.$data); //已被初始化
console.log("%c%s", "color:red","message: " + this.message); //已被初始化
},
beforeMount: function() {
console.group('------beforeMount挂载前状态------');
console.log("%c%s", "color:red","el : " + (this.$el)); //已被初始化
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data); //已被初始化
console.log("%c%s", "color:red","message: " + this.message); //已被初始化
},
mounted: function() {
console.group('------mounted 挂载结束状态------');
console.log("%c%s", "color:red","el : " + this.$el); //已被初始化
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data); //已被初始化
console.log("%c%s", "color:red","message: " + this.message); //已被初始化
},
beforeUpdate: function () {
console.group('beforeUpdate 更新前状态===============》');
console.log('真实dom结构:' + document.getElementById('app').innerHTML);
console.log("%c%s", "color:red","el : " + this.$el);
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data);
console.log("%c%s", "color:red","message: " + this.message);
},
updated: function () {
console.group('updated 更新完成状态===============》');
console.log('真实dom结构:' + document.getElementById('app').innerHTML);
console.log("%c%s", "color:red","el : " + this.$el);
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data);
console.log("%c%s", "color:red","message: " + this.message);
},
beforeDestroy: function () {
console.group('beforeDestroy 销毁前状态===============》');
console.log("%c%s", "color:red","el : " + this.$el);
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data);
console.log("%c%s", "color:red","message: " + this.message);
},
destroyed: function () {
console.group('destroyed 销毁完成状态===============》');
console.log("%c%s", "color:red","el : " + this.$el);
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data);
console.log("%c%s", "color:red","message: " + this.message)
}
})
复制代码
See the Pen
vue生命周期详解 by madman0621 (
@madman0621) on
CodePen.
在created执行以后,判断vue实例对象是否有emplate参数选项:
若是有则将其做为模板编译成render函数;
若是没有template选项,则将外部HTML做为模板编译;
可是若是vue实例对象存在自定义render函数,则以render函数中做为模板编译。vue
总结优先度为:render函数选项 > template选项 > outer HTML。bash
<div id="app">
<!--html中定义模板(优先级第三)-->
<h1>这是在outer HTML中定义的模板</h1>
</div>
var vm = new Vue({
el: '#app',
//在vue配置项template中定义模板(优先级第二)
template: "<h1>这是在template中定义的模板</h1>",
data: {
message: 'Vue的生命周期'
},
//在render中定义模板(优先级第一)
render: function(createElement) {
return createElement('h1', '这是在render函数中定义的模板')
}
})
复制代码
See the Pen
vue渲染模板优先度测试 by madman0621 (
@madman0621) on
CodePen.