MVC MVVM

Thursday, September 3, 2020

MVC

MVC 是 Model View Controller 的缩写

  • Model:模型层,数据相关的操作

  • View:视图层,用户界面渲染逻辑

  • Controller:控制器,数据模型和视图之间通信的桥梁

    view

    <div>
      <span id="container">0</span>
      <button id="btn">+</button>
    </div>
    

    model

    function add (node) {
      // 业务逻辑处理
      const currentValue = parseInt(node.innerText);
      const newValue = currentValue + 1;
    
      // 更新视图
        node.innerText = current + 1;
    }
    

    controller

    const button = document.getElementById('btn');
    // 响应视图指令
    button.addEventListener('click', () => {
      const container = document.getElementById('container');
    
      // 调用模型
        add(container);
    }, false);
    

MVVM

MVVM 可以写成 MV-VM,是 Model View - ViewModel 的缩写,ViewModel 把 View 和 Model 做了自动关联,框架替应用开发者实现数据变化后的视图更新

view

<div id="test">
  <!-- 数据和视图绑定 -->
    <span>{{counter}}</span>
  <button v-on:click="counterPlus">+</button>
</div>

model

function add (num) {
  return num + 1;
}

viewmodel

new Vue({
  el: '#test',
  data: {
    counter: 0
  },
  methods: {
    counterPlus: function () {
        // 只需要修改数据,无需手工修改视图
        this.counter = add(this.counter);
    }
  }
})

img

img

  • Observer 监听器:用来监听属性的变化通知订阅者
  • Watcher 订阅者:收到属性的变化,然后更新视图
  • Compile 解析器:解析指令,初始化模版,绑定订阅者