1、构造器
每一个Vue.js应用都是通过使用Vue构造器方法创建一个Vue根实例启动:
var vm = new Vue({ // options })
Vue实例实质上就是MVVM模式(Model-View-ViewModel,关于MVC、MVP和MVVM之间的区别可参考阮一峰这篇博客:http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html)中定义的ViewModel,从此以后,vm
这个变量会贯穿整个文档教程。
当你实例化一个Vue实例的时候,需要传递选项对象,该对象包含了数据、模板、要挂载的元素、方法、生命周期回调等,完整的选项列表请参考API文档。
Vue实例可以通过预定义选项进行扩展,从而创建可复用的组件构造器:
var MyComponent = Vue.extend({ // extension options }) // all instances of `MyComponent` are created with // the pre-defined extension options var myComponentInstance = new MyComponent()
尽管你可以创建扩展实例,但是在大多数情况下你需要以自定义元素的方式注册组件构造器,然后在模板中对它们进行组合。我们会在后续章节讨论组件系统的细节,现在,你只需要知道所有的Vue.js组件都是继承自Vue实例即可。
2、属性和方法
每个Vue实例都会代理其data对象中的所有属性:
var data = { a: 1 } var vm = new Vue({ data: data }) vm.a === data.a // -> true // setting the property also affects original data vm.a = 2 data.a // -> 2 // ... and vice-versa data.a = 3 vm.a // -> 3
需要注意的是只有代理属性是反应式的,如果在实例创建之后添加一个新的属性到实例上,将不会触发任何视图更新。关于这一点我们将在后续反应系统中讨论。
除了数据属性之外,Vue实例还提供了许多有用的实例属性和方法,这些属性和方法都以$
开头以便和代理数据属性进行区分。例如:
var data = { a: 1 } var vm = new Vue({ el: '#example', data: data }) vm.$data === data // -> true vm.$el === document.getElementById('example') // -> true // $watch is an instance method vm.$watch('a', function (newVal, oldVal) { // this callback will be called when `vm.a` changes })
完整的Vue实例属性和方法请参考API文档。
3、实例生命周期
每个Vue实例在创建时都会经历一系列实例化步骤,例如,需要设置数据观察、编译模板、以及创建必要的数据绑定。在这个过程中,还会调用生命周期钩子,从而方便我们执行自定义逻辑,例如,created
钩子会在实例创建后调用:
var vm = new Vue({ data: { a: 1 }, created: function () { // `this` points to the vm instance console.log('a is: ' + this.a) } }) // -> "a is: 1"
还有一些钩子会在实例生命周期的不同阶段调用,例如compiled
、ready
和destroyed
,所有被调用的生命周期钩子通过this
指向调用它的Vue实例,一些用户可能会疑惑在Vue.js的世界中有没有“控制器”的概念,答案是没有。组件的自定义逻辑会被分割到这些生命周期钩子中。
4、生命周期图示
下面是Vue实例生命周期的图示,你现在不需要了解里面的所有东西,但是这张表在后续学习中将很有用。
谢谢老大
学员君,为何vue部分不用vue-cli搭建的项目作为前端呢?
感谢学院君的分享
感觉学院君可以将那个博客系列重构一遍,加入vue,光看这些知识点不会运用
肯定会有实战教程的
vue.js是个前端框架吧??我一直没有太明白,运用Vue.js有什么好处??能给解释一下吗?