Vue 实例

Vue 实例创建一个 Vue 实例每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的 varvm newVue 选项 虽然没有完全遵循 MVVM 模型 但是 Vue 的设计也受到了它的启发 因此在文档中经常会使用 vm ViewModel 的缩写 这个变量名表示 Vue 实例 当创建一个 Vue 实例时 你可以传入一个选项对象 这篇教程主要描述的就是如何使用这些选项来创建你想要的行为 作为参考 你也可以在 API 文档中浏览完整的选项列表

创建一个 Vue 实例

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

var vm = new Vue({ // 选项 })

虽然没有完全遵循 MVVM 模型,但是 Vue 的设计也受到了它的启发。因此在文档中经常会使用 vm (ViewModel 的缩写) 这个变量名表示 Vue 实例。

当创建一个 Vue 实例时,你可以传入一个选项对象。这篇教程主要描述的就是如何使用这些选项来创建你想要的行为。作为参考,你也可以在 API 文档中浏览完整的选项列表。

一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实例,以及可选的嵌套的、可复用的组件树组成。举个例子,一个 todo 应用的组件树可以是这样的:

根实例 └─ TodoList ├─ TodoItem │ ├─ TodoButtonDelete │ └─ TodoButtonEdit └─ TodoListFooter ├─ TodosButtonClear └─ TodoListStatistics

我们会在稍后的组件系统章节具体展开。不过现在,你只需要明白所有的 Vue 组件都是 Vue 实例,并且接受相同的选项对象 (一些根实例特有的选项除外)。

数据与方法

当一个 Vue 实例被创建时,它将 data 对象中的所有的 property 加入到 Vue 的响应式系统当这些 property 的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。

// 我们的数据对象 var data = { a: 1 } // 该对象被加入到一个 Vue 实例中 var vm = new Vue({ data: data }) // 获得这个实例上的 property // 返回源数据中对应的字段 vm.a == data.a // => true // 设置 property 也会影响到原始数据 vm.a = 2 data.a // => 2 // ……反之亦然 data.a = 3 vm.a // => 3

当这些数据改变时,视图会进行重渲染。值得注意的是只有当实例被创建时就已经存在于 data 中的 property 才是响应式。也就是说如果你添加一个新的 property,比如:

vm.b = 'hi'

那么对 b 的改动将不会触发任何视图的更新。如果你知道你会在晚些时候需要一个 property,但是一开始它为空或不存在,那么你仅需要设置一些初始值。比如:

data: { newTodoText: '', visitCount: 0, hideCompletedTodos: false, todos: [], error: null }

这里唯一的例外是使用 Object.freeze()(冻结对象),这会阻止修改现有的 property,也意味着响应系统无法再追踪变化。

var obj = { foo: 'bar' } Object.freeze(obj) new Vue({ el: '#app', data: obj })
 
  

{ { foo }}

除了数据 property,Vue 实例还暴露了一些有用的实例 property 与方法。它们都有前缀 $,以便与用户定义的 property 区分开来。例如:

var data = { a: 1 } var vm = new Vue({ el: '#example', data: data }) vm.$data === data // => true vm.$el === document.getElementById('example') // => true // $watch 是一个实例方法 vm.$watch('a', function (newValue, oldValue) { // 这个回调将在 `vm.a` 改变后调用 })

以后你可以在 API 参考中查阅到完整的实例 property 和方法的列表。

实例生命周期钩子

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

比如 created 钩子可以用来在一个实例被创建之后执行代码:

new Vue({ data: { a: 1 }, created: function () { // `this` 指向 vm 实例 console.log('a is: ' + this.a) } }) // => "a is: 1"

也有一些其它的钩子,在实例生命周期的不同阶段被调用,如 mounted、updated 和 destroyed。生命周期钩子的 this 上下文指向调用它的 Vue 实例

不要在选项 property 或回调上使用箭头函数,比如 created: () => console.log(this.a) 或 vm.$watch('a', newValue => this.myMethod())。因为箭头函数并没有 thisthis 会作为变量一直向上级词法作用域查找,直至找到为止,经常导致 Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之类的错误。

生命周期图示

下图展示了实例的生命周期。你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高。

Vue 实例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217676.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午9:02
下一篇 2026年3月18日 上午9:02


相关推荐

  • pvcreate 创建物理卷PV

    pvcreate 创建物理卷PVpvcreate 命令用于创建物理卷 即创建 PV 这是 lvm 技术里常用的一个命令 其语法格式如下 pvcreate option dev sdb dev sdc1 常用参数 无 一般可不用写参数 演示示例 root localhost pvcreate dev sdb dev sdc 直接将磁盘或某个分区转化为物理卷 Physicalvolu dev sdb successfully Physicalvolu de

    2026年3月18日
    2
  • Word中给公式加编号,编号右对齐方法

    Word中给公式加编号,编号右对齐方法这种方法的神奇之处在于纯自动 无须手动拖放 当然此方法的适用版本是 office2016 以及以后的版本 亲测 office2007 不行 office2016 百度云分享网址 链接 https pan baidu com s 1wXtXdiZL9yW 提取码 3uys 嫌弃百度云下载速度的可以到 msdn 去下载 是一样的 好的 万事俱备 方法是 公式

    2026年3月17日
    2
  • ajax跨域的解决办法_jsonp解决跨域问题

    ajax跨域的解决办法_jsonp解决跨域问题才发送请求,然后执行servlet,servlet给它响应一段js代码回去,它接收到js代码解释并执行,显示效果,它并没有达到局部刷新的效果,我们让它达到局部刷新的效果,我们点击某一个按钮,我们让它局部刷新,显然上面让页面打开的时候加载script标签就不行了,我们可以让他先加载完,点击页面某一个按钮去加载script标签,来达到页面的局部刷新,整个过程跟ajax没有关系。当out.print(“sayHello({\”name\”\”jackson\”})”)重新刷新页面响应成功。……

    2022年8月24日
    6
  • cursor工具植入java使用教程

    cursor工具植入java使用教程

    2026年3月15日
    3
  • 清关报关知识详解_海关清关中是什么意思

    清关报关知识详解_海关清关中是什么意思  加工中心清关代理流程报关知识科普    进口泰国二手加工中心清关代理流程报关知识科普    机电企业产品的定义:机电技术产品是指使用进行机械、电器、电子信息设备所生产的各类农具机械、电器、电子系统性能的生产管理设备和生活用机具。一般包括机械设备、电气设备、运输工具、电子产品、电子产品、仪器仪表、金属产品及其零部件。    那么什么是二手设备?    (一)已经可以使用(不含使用前测试、调试的设备),仍具备基本信息功能和一定能够使用时间价值的;    (二)未经使用,但是超过质量保

    2026年2月8日
    4
  • x11vnc 安装与配置(转)

    x11vnc 安装与配置(转)1 手动启动 x11vnc 按组合键 CTRL ALT T 打开终端 输入 sudo usr bin x11vnc display 0 auth var run lightdm root 0 forever bg o var log x11vnc log rfbauth etc x11vnc pass rfbport59002 设置开机启动 1 1 确保已经安装 x11vnc 如

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号