3.Vue 实例

创建一个 Vue 实例

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

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

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

当创建一个 Vue 实例时,你可以传入一个选项对象。这篇教程主要描述的就是如何使用这些选项来创建你想要的行为。

作为参考,你也可以在 API 文档 中浏览完整的选项列表。

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

举个例子,一个 todo 应用的组件树可以是这样的:

数据与方法

1.它将 data 对象中的所有的属性加入到 Vue 的响应式系统中。

当一个 Vue 实例被创建时,它将 data 对象中的所有的属性加入到 Vue 的响应式系统中。

当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。

// 我们的数据对象
var data = { a: 1 }

// 该对象被加入到一个 Vue 实例中
var vm = new Vue({
  data: data
})

// 获得这个实例上的属性
// 返回源数据中对应的字段
vm.a == data.a // => true

// 设置属性也会影响到原始数据
vm.a = 2
data.a // => 2

// ……反之亦然
data.a = 3
vm.a // => 3

2.只有当实例被创建时就已经存在于 data 中的属性才是响应式的

当这些数据改变时,视图会进行重渲染。

值得注意的是只有当实例被创建时就已经存在于 data 中的属性才是响应式的。也就是说如果你添加一个新的属性,比如:

vm.b = ‘hi‘

那么对 b 的改动将不会触发任何视图的更新。

如果你知道你会在晚些时候需要一个属性,但是一开始它为空或不存在,那么你仅需要设置一些初始值。比如:

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

3.Object.freeze(),这会阻止修改现有的属性

var obj = {
  foo: ‘bar‘
}

Object.freeze(obj)

new Vue({
  el: ‘#app‘,
  data: obj
})
<div id="app">
  <p>{{ foo }}</p>
  <!-- 这里的 `foo` 不会更新! -->
  <button v-on:click="foo = ‘baz‘">Change it</button>
</div>

4. $实例属性 和  $实例方法

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

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` 改变后调用
})

实例生命周期钩子

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,

需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。

同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

created 钩子

可以用来在一个实例被创建之后执行代码

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

也有一些其它的钩子,在实例生命周期的不同阶段被调用,如 mountedupdated 和 destroyed

生命周期钩子的 this 上下文指向调用它的 Vue 实例。

不要在选项属性或回调上使用箭头函数,比如 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 之类的错误。

原文地址:https://www.cnblogs.com/Rivend/p/12081665.html

时间: 2024-08-01 05:55:23

3.Vue 实例的相关文章

vue实例整理1

一 介绍 (1)       声明式渲染, 文本插值 <div id="app"> <p>{{message}}</p> </div> <script src="scripts/vue.js"></script> <script> new Vue({ el:'#app', data:{ message:'Hello Vue.js!' } }) </script> (2) 

vue实例

一.构造器 每个vue应用都是通过构造函数vue创建一个vue的根实例启动的 var MyComponent=Vue.extend({ //扩展选项})var myComponentInstance=new MyComponent() 二.属性和方法 每个vue实例都会代理其data对下里所有的属性: var data={a:1}var vm=new VUe({ data:data})vm.a===data.a //truevm.a=2data.a //2data.a=3vm.a //3 只有这

Vue 实例中的生命周期钩子

Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑. Vue 实例 在文档中经常会使用 vm 这个变量名表示 Vue 实例,在实例化 Vue 时,需要传入一个选项对象,它可以包含数据(data).模板(template).挂载元素(el).方法(methods).生命周期钩子(lifecyclehook)等选项. Vue 实例化的选项 需要注意的

vue学习笔记(四)——Vue实例以及生命周期

1.构造器(实例化) var vm = new Vue({ //选项 |-------DOM |   |-------el (提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标.) |   |-------template (一个字符串模板作为 Vue 实例的标识使用.模板将会 替换 挂载的元素.挂载元素的内容都将被忽略,除非模板的内容有分发 slot.) |   |-------render (字符串模板的代替方案,允许你发挥 JavaScript 最大的编程能力.) |---

vue.js开发环境搭建以及创建一个vue实例

Vue.js 是一套构建用户界面的渐进式框架.Vue 只关注视图层, 采用自底向上增量开发的设计.Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. 在使用 vue.js 之前首先需要搭建 vue.js 的开发环境,下面,我们就来一步一步的搭建 vue.js 的环境: 1.首先,我们需要安装 node.js: 安装 node.js 请参考  node.js安装配置 ,可以打开命令行,输入 node -v,如果输出版本号,说明我们安装 node 环境成功,输入 npm

vue实例-学习

构造器: 每个vue.js应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的: var vm = new Vue({ //选项 }) 虽然没有完全遵循 MVVM模式 ,Vue的设计无疑受到了它的启发.因此在文档中经常会使用vm这个变量名表示Vue实例. 在实例化Vue时,需要传入一个选项对象,它可以包含数据.模板.挂载元素.方法.生命周期钩子等选项.全部选项可去看API. 可以扩展Vue构造器,从而用预定义选项创建可复用的组件构造器: var

VUE实例 -- 洗牌

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>VUE实例洗牌</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.14.1/lodash.min.js"></script&g

vue实例生命周期详解

每个 Vue 实例在被创建之前都要经过一系列的初始化过程. 例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 DOM . 在这个过程中,实例也会调用一些 生命周期钩子 ,这就给我们提供了执行自定义逻辑的机会.例如,created 这个钩子在实例被创建之后被调用 var vm = new Vue({ data: { a: 1 }, created: function () { // `this` 指向 vm 实例 console.log

聊一聊Vue实例与生命周期运行机制

Vue的实例是Vue框架的入口,担任MVVM中的ViewModel角色,所有功能的实现都是围绕其生命周期进行的,在生命周期的不同阶段调用对应的钩子函数可以实现组件数据管理和DOM渲染两大重要功能.例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 DOM .在这个过程中,事件钩子可以辅助我们对整个实例生成.编译.挂载.销毁等过程进行js控制,给我们提供了执行自定义逻辑的机会.所以学习实例的生命周期,能帮助我们理解vue实例的运行机制,更

Vue实例生命周期

前面的话 Vue实例在创建时有一系列的初始化步骤,例如建立数据观察,编译模板,创建数据绑定等.在此过程中,我们可以通过一些定义好的生命周期钩子函数来运行业务逻辑.本文将详细介绍Vue实例的生命周期 图示 下图是Vue实例生命周期的图示 解释 接下来,根据提供的生命周期钩子,对Vue实例各个阶段的情况进行详细说明 [beforeCreate] 在实例开始初始化时同步调用.此时数据观测.事件等都尚未初始化 [created] 在实例创建之后调用.此时已完成数据观测.事件方法,但尚未开始DOM编译,即