MVVM框架(vue)

2018-06-30  本文已影响59人  阿昕_

对MVVM的认识

深入了解:http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html

jquery 和 vue 的区别

MVC

MVVM

Vue 三要素

响应式:Vue如何监听到data的每个属性变化
    var vm = {}
    var data = {
      name: 'liuxin',
      age: 22
    }
    
    for (let key in data){
      Object.defineProperty(vm, key, {
        get: function() {
          return data[key]
        },
        set: function(newVal) {
          data[key] = newVal
        }
      })
    }
模板引擎:Vue的模板如何让被解析,指令如何处理
渲染: Vue的模板如何被渲染成HTML以及渲染过程

Vue 的整个实现流程

解析模板成render函数
响应式开始监听
首次渲染,显示页面,且绑定依赖
data属性变化,触发re-render

vue双向绑定原理

采用数据劫持结合观察者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

vue设计模式

观察者模式
1、松耦合的代码;
2、一对多的关系;
3、主体状态变化时,所有依赖被通知;
4、主体和观察者互不知晓。

基本上,满足上面四点的,就可以算是观察者模式了

//发布者
let pub = {
    notice(){
        dep.update();
    }
}
//订阅者
let sub1 = {
    update(){
        console.log('sub1 update')
    }
}
let sub2 = {
    update(){
        console.log('sub2 update')
    }
}
let sub3 = {
    update(){
        console.log('sub3 update')
    }
}
//主体
function Dep(_sub){
    this.update = ()=>{
        for(let i=0; i<_sub.length; i++){
            _sub[i].update();
        }
    }
}
let dep = new Dep([sub1,sub2,sub3]);

//发布消息
pub.notice();


//  > sub1 update
//  > sub2 update
//  > sub3 update

dep观察到pub发生了更新,就会循环依赖列表,依次触发各个依赖事件

vue生命周期

总共分为8个阶段创建前/后,载入前/后,更新前/后,销毁前/后。

深入了解:https://www.cnblogs.com/sichaoyun/p/8406194.html

上一篇下一篇

猜你喜欢

热点阅读