Vue实例

2019-09-25  本文已影响0人  nzdnllm

创建一个Vue实例

1.每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的:

var vm = new Vue({
          //实例的数据、方法
        })

2.我们也可以通过创建组件的方法创建一个实例:

 Vue.component('todo-item', {
             //实例的数据、方法
        })

一个vue的程序就是由多个组件构成的,也就是说是由多个Vue实例构成的。

Vue实例的生命周期函数

Vue生命周期
var vm = new Vue({
            el:'#app',
            beforeCreate:function () {
                console.log("beforeCreate");
            }
        })
控制台查看beforeCreate函数
var vm = new Vue({
            el:'#app',
            beforeCreate:function () {
                console.log("beforeCreate");
            },
            created:function () {
                console.log("created");
            }
        })
控制台查看created
<div id="app">{{message}}</div>
//使用el挂载
 <script>
        var vm = new Vue({
            el:'#app',
            data:{
                message:'test'
            }
        })
</script>
//使用$mount()开启手动编译
 <script>
        var vm = new Vue({
            data:{
                message:'test'
            }
        }).$mount('#app')
</script>
页面展示
//使用el挂载点的HTML,即 <div id="app">{{message}}</div>作为模板
 <div id="app">{{message}}</div>
 <script>
        var vm = new Vue({
            el:'#app',
            data:{
                message:'Hello Word'
            }
        })
 </script>
//使用实例中的template
<div id="app"></div>
 <script>
        var vm = new Vue({
            el:'#app',
            template:'<div>{{message}}</div>',
            data:{
                message:'Hello Word'
            }
        })
 </script>
两种方式的页面展示相同
var vm = new Vue({
            data:{
                message:'Hello Word'
            },
            beforeCreate:function () {
                console.log("beforeCreate");
            },
            created:function () {
                console.log("created");
            },
            beforeMount:function () {
                console.log("beforeMount");
            }
        })
控制台查看beforeMount
 <div id="app"></div>
    <script>
        var vm = new Vue({
            el:'#app',
            template:'<div>{{message}}</div>',
            data:{
                message:'Hello Word'
            },
            beforeCreate:function () {
                console.log("beforeCreate");
            },
            created:function () {
                console.log("created");
            },
            beforeMount:function () {
                console.log(this.$el);  //显示的是未挂载之前的页面渲染
                console.log("beforeMount");
            },
            mounted:function () {
                console.log(this.$el);//显示的是挂在后的页面渲染
                console.log("mounted");
            }
        })
    </script>
Mounted中的方法是在页面挂载后执行
<div id="app"></div>
    <script>
        var vm = new Vue({
            el:'#app',
            template:'<div>{{message}}</div>',
            data:{
                message:'Hello Word'
            },
            beforeCreate:function () {
                console.log("beforeCreate");
            },
            created:function () {
                console.log("created");
            },
            beforeMount:function () {
                console.log(this.$el);
                console.log("beforeMount");
            },
            mounted:function () {
                console.log(this.$el);
                console.log("mounted");
            },
            beforeDestroy:function () {
                console.log("beforeDestroy");
            },
            destroyed:function () {
                console.log("destroyed");
            }
        })
    </script>
控制台不显示beforeDestroy和destroyed中调用方法
控制台不显示beforeDestroy和destroyed中调用的方法,应为Vue实例创建后,并未调用vm.$destroy()对实例进行销毁,而beforeDestroy函数是在Vue实例即将被销毁时执行,destroyed函数是在Vue实例被销毁后执行,此时我们在控制台将Vue实例销毁,就会先执行beforeDestroy函数后执行destroyed函数
销毁Vue实例方法 vm.$destroy()
销毁Vue实例后的控制台显示
<div id="app"></div>
    <script>
        var vm = new Vue({
            el:'#app',
            template:'<div>{{message}}</div>',
            data:{
                message:'Hello Word'
            },
            beforeCreate:function () {
                console.log("beforeCreate");
            },
            created:function () {
                console.log("created");
            },
            beforeMount:function () {
                console.log(this.$el);
                console.log("beforeMount");
            },
            mounted:function () {
                console.log(this.$el);
                console.log("mounted");
            },
            beforeDestroy:function () {
                console.log("beforeDestroy");
            },
            destroyed:function () {
                console.log("destroyed");
            },
            beforeUpdate:function () {
                console.log("beforeUpdate");
            },
            updated:function () {
                console.log("updated");
            }
        })
    </script>
数据未发生变化,beforeUpdate和updated函数未被执行

这时候我们改变数据后查看控制台,如图执行了beforeUpdate和updated方法


改变message后控制台显示
上一篇下一篇

猜你喜欢

热点阅读