Model:数据模型,数据和业务逻辑都在这里定义;View表明视图,负责数据的展现;ViewModel:负责监听model中数据的改变而且控制视图的更新,处理用户交互操做;Model和View无直接联系,是经过ViewModel来联系的,Model和ViewModel之间有双向数据绑定的关系,所以当model中数据改变时会触发view层的刷新,View中因为用户交互操做而改变的数据也会在Model中同步。vue
官网上也有比较详细的解释:https://cn.vuejs.org/v2/api/#computed;这里加一点我的的通俗的理解,watch是监听的属性,对象有变化时才会执行,好比一进去一个组件时监听值没有变化,那依赖它的返回也不会有,而computed却依然会计算,它计算出的值会在vue实例中,computed计算属性会缓存值,即若是计算结果依赖的属性没有变化,没有致使计算结果变化就不会从新计算;methods是方法,必需要触发才会执行,也能够在vue指令中直接调用,能够带参数。api
这个通常看我的项目需求,咱们的项目页面通常是须要在页面加载完以前将数据准备好,这样页面渲染时数据也准备好了;可是假如请求比较大,须要先加载完页面,那就放在mounted阶段,一般在这两个阶段发数据请求比较常见。缓存
原文分析:https://juejin.im/entry/589ff26486b599006b3dea9b,其实就是利用对象的defineproperty,定义了每一个属性的值,get和set方式,并利用观察者模式,观察每一个属性的值,在get读取值得时候和set值得时候都进行劫持,获取值时作一些操做,好比改变页面的渲染显示;页面进行操做,改值,会在set里面作一些操做改变属性的值3d