浅析Vue实例以及生命周期

 更新时间:2018年08月14日 09:01:12   作者:沉江、小鱼  
这篇文章给大家分享了Vue实例以及生命周期的相关知识点内容,有兴趣的朋友们可以学习下。

最简单的Vue 实例

//html
<div id="app">
 {{message}}
</div>

//javascript
var vm = new Vue({
 el: '#app',
 data: {
 message: 'Hello Vue!'
 }
})

由于 Vue 借鉴了 MVVM 的思想,这里的字符串 "Hello Vue!" 就相当于 Model,DOM 就相当于 View,Vue 实例 "vm" 则是起连接 Mode 和 View 作用的 ViewModel,因此我们才得以通过数据驱动视图,而不需要关心它是怎么实现的,因为 Vue 已经帮我们做好了一切。

Vue 实例内置的属性和方法都是以 "$" 开头的,例如:vm.$data、vm.$el 等,另外选项并不等于实例,选项是通过 new Vue() 构造函数时传入的参数对象,但是实例可以从暴露的接口访问某些选项的值,例如:console.log(vm.$data.message) 输出 "Hello Vue!"。

实例的生命周期

在创建实例的过程中,Vue 提供了一些生命周期钩子函数,允许我们再某一特定阶段执行一些额外的操作:

beforeCreate:

在实例初始化之后,数据绑定之前会调用这个函数,例如:

//javascript
var vm = new Vue({
 el: '#app',
 data: {
  message: 'Hello Vue!'
 },
 beforeCreate: function() {
  console.log(this.message); //undefind
 }
})

需要说明的有两点:1、这里的 "this" 指向 Vue 实例,即 "vm",2、Vue 实例同时也代理了选项中 "data" 下的所有属性,也就是说 vm.message == vm.$data.message == "Hello Vue!",但是因为在这个阶段数据并没有绑定到 Vun 实例上面,所以输出 "undefind"。在这之前数据会先保存在 vm.$options 中,如果要在这个阶段获取数据,可以先通过 vm.$options.data() 方法,返回 "data" 对象,通过 vm.$options.data().message 返回对应的值。
在这个阶段可以做一些不需要数据的工作,比如说开启全局 loading 效果。

created:

在实例创建完成,数据绑定之后会调用这个函数,此时 console.log(this.message) 输出正确的值 "Hello Vue!"。
在这个阶段,数据已经初始化为选项中的默认值,但是真实的数据还要通过 ajax 从后端数据库获取,因此这个阶段可以向后端发请求获取数据,然后绑定到对应属性上。

之后判断选项中有无 "el" 属性(作为 Vue 实例的挂载目标,在这里就是 id 为 app 的 div 标签),如果没有,则需要手动调用 vm.$mount(el) 方法指定挂载的目标;

接着判断选项中有无 "template" 属性,如果没有,则直接使用 "el" 属性指定的挂载目标,如果有,那么就用 "template" 属性指定的字符串模板替换挂载目标,挂载目标中的所有内容将被忽略;

beforeMount:

在实例挂载之前调用。

在这个阶段可以移除全局 loading 效果。

mounted:

在实例挂载之后调用。

在这个阶段页面已经加载完毕,可以对 DOM 进行操作。

beforeUpdate:

在数据更新时调用。

在这个阶段可以在数据更新前访问现有的 DOM。

updated:

在数据更新之后调用。

在这个阶段可以对更新后的 DOM 进行操作。

相关文章

  • Vue实现省市区级联下拉选择框

    Vue实现省市区级联下拉选择框

    这篇文章主要为大家详细介绍了Vue实现省市区级联下拉选择框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • vue中mint-ui的使用方法

    vue中mint-ui的使用方法

    这篇文章主要为大家详细介绍了vue中mint-ui的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Vue3使用Univer Docs创建在线编辑Excel的示例代码

    Vue3使用Univer Docs创建在线编辑Excel的示例代码

    本文介绍了如何在Vue3项目中集成UniverDocs,一个基于Luckysheet的企业文档与数据协同解决方案,指导了从安装到在页面中使用的步骤,以及注意事项,如数据格式转换和二次开发的灵活性,需要的朋友可以参考下
    2025-04-04
  • vue在外部方法给下拉框赋值后不显示label的解决

    vue在外部方法给下拉框赋值后不显示label的解决

    这篇文章主要介绍了vue在外部方法给下拉框赋值后不显示label的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue中el-table树状表格末行合计实现

    vue中el-table树状表格末行合计实现

    本文主要介绍了vue中el-table树状表格末行合计实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • vue3中各种类型文件进行预览功能实例

    vue3中各种类型文件进行预览功能实例

    在vue移动端项目中经常遇到这样的需求,对一些上传的附件可以点击之后在线预览,所以下面这篇文章主要给大家介绍了关于vue3中各种类型文件进行预览功能的相关资料,需要的朋友可以参考下
    2021-09-09
  • Vue.js 实现微信公众号菜单编辑器功能(一)

    Vue.js 实现微信公众号菜单编辑器功能(一)

    最近vue.js 非常火热,小编也趁机学习了下vuejs的一些基础知识,于是尝试做一个像微信平台里的菜单编辑器功能,下面脚本之家小编把vue.js 微信公众号菜单编辑器功能的实现代码分享给大家,需要的朋友参考下
    2018-05-05
  • Vue+ElementUI怎么处理超大表单实例讲解

    Vue+ElementUI怎么处理超大表单实例讲解

    在本篇文章里小编给大家整理的是一篇关于Vue+ElementUI怎么处理超大表单实例讲解内容,以后需要的朋友可以跟着学习参考下。
    2021-11-11
  • Vue中设置登录验证拦截功能的思路详解

    Vue中设置登录验证拦截功能的思路详解

    今天在做vue和springboot交互的一个项目的时候,想要基于前端实现一些只有登录验证之后才能访问某些页面的操作,所以在这里总结一下实现该功能的一个解决方案
    2021-10-10
  • vue自定义开发滑动图片验证组件

    vue自定义开发滑动图片验证组件

    这篇文章主要为大家详细介绍了vue自定义开发滑动图片验证组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论