每一个 Vue 应用都是经过用 Vue 函数建立一个新的 Vue 实例开始的vue
当建立一个 Vue 实例时,你能够传入一个选项对象,指定这个 Vue 实例所管理的元素。
一个 Vue 应用由一个经过 new Vue 建立的根 Vue 实例,以及可选的嵌套的、可复用的组件树组成app
当一个 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
当这些数据改变时,视图会进行重渲染。
值得注意的是只有当实例被建立时就已经存在于 data 中的属性才是响应式的。
也就是说若是你添加一个新的属性,那么这个改动将不会触发任何视图的更新。
若是你知道你会在晚些时候须要一个属性,可是一开始它为空或不存在,那么你仅须要设置一些初始值。code
这里惟一的例外是使用 Object.freeze(),这会阻止修改现有的属性,也意味着响应系统没法再追踪变化。对象
var obj = { foo: 'bar' } Object.freeze(obj) new Vue({ el: '#app', data: obj })
每一个 Vue 实例在被建立时都要通过一系列的初始化过程——例如,须要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程当中也会运行一些叫作生命周期钩子的函数,这给了用户在不一样阶段添加本身的代码的机会。blog