从0到1_前端开发

Web App开发--Vue生命周期与生命钩子

2017-05-06  本文已影响519人  ef43ffb32440

Vue实例


构造器

在实例化 Vue 时,需要传入一个选项对象,它可以包含数据、模板、挂载元素、方法、生命周期钩子等选项。全部的选项可以在 API 文档中查看。

每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的:

var vm = new Vue({
  // 选项
})
Vue实例生命周期

每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如,实例需要配置数据观测(data observer)、编译模版、挂载实例到 DOM ,然后在数据变化时更新 DOM 。在这个过程中,实例也会调用一些 生命周期钩子
其它的钩子,在实例生命周期的不同阶段调用,如mountedupdateddestroyed 。钩子的 this 指向调用它的 Vue 实例。一些用户可能会问 Vue.js 是否有“控制器”的概念?答案是,没有。组件的自定义逻辑可以分布在这些钩子中。

生命周期示意图


<br />

生命钩子的用法


从上面的图片中可直到,Vue实例的生命钩子有beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroy
另外,Vue的构造器还有其它的选项,如eldatacomputedwatchmethods等。
创建一个Vue实例如下,不过一般用不上全部的构造器选项:

new Vue({
    el: "#app",  
    data: {
        var1: xxx,
        var2: {
            innerVar1: xxx,
            innerVar2: xxx,
            innerVar3: xxx
        }
    },
    computed: {
        sumOfVar2: function() {
            return (this.var2.innerVar1 + this.var2.innerVar2 + this.var2.innerVar3);
        }
    },
    watch: {
         'var1': function() {
         },
        'var2.innerVar1': function() {          
        },
        'var2.innerVar2': function() {  
        },
        'var2.innerVar3': function() {  
        }   
    },
    methods: {
        func1: function() {
        },
        func2: function() {
        },
        func3: function() {
        }
    },
    beforeCreate: function () {
    },
    created: function () {
    },
    beforeMount: function () {
    },
    mounted: function() {
    },
    beforeUpdate: function () {
    },
    updated: function () {
    },
    beforeDestroy: function() {
    },
    destroyed: function() {
    }
});

我本人用的最多的是mountedupdated

mounted在Vue实例挂载到Dom上执行,这个阶段网页还在加载。而且从页面开始加载到加载完成,mounted只执行一次。因此,不要在mounted中执行一些耗时的操作,否则会导致页面的加载速度变慢。mounted适合做一些数据和界面的初始化操作。

由于mounted时实例已经挂载到Dom上,所以这是可以对元素节点进行一些操作。但如果某个元素节点用了v-if控制切换显示,而且初始时v-if的条件为假,则Dom上就没有该元素节点。这时即使在mounted中也获取不到该元素节点。

updated在每次数据更新时都会执行。数据更新后可以在这里进行一些后续的操作。

上一篇: Web App开发--vue.js入门与实践
下一篇: Web App开发--Vue组件化应用构建

上一篇 下一篇

猜你喜欢

热点阅读