M - Model :数据保存 V - View : 用户界面 C - Controller : 业务逻辑
MVC ,用户操作> View (负责接受用户的输入操作)>Controller(业务逻辑处理)>Model(数据持久化)>View(将结果通过View反馈给用户)
MVC是最经典的开发模式之一,最早是后台那边来的,后台前端的复杂度也上来了,MVC的开发模式也带进前端了众所周知,MVC是开发客户端最经典的设计模式,iOS 开发也不例外,但是 MVC 有让人无法忽视的严重问题。
在通常的开发中,除了简单的 Model、View 以外的所有部分都被放在了 Controller 里面。Controller负责显示界面、响应用户的操作、网络请求以及与 Model 交互。这就导致了Controller:逻辑复杂,难以维护。和 View 紧耦合,无法测试。
MVC有两个很明显的问题:
1.m层和v层直接打交道,导致这两层耦合度高
2.因为所有逻辑都写在c层,导致c层特别臃肿
为了解决这两个问题,MVC的变种模式出现了MVVM!.
MVVM是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双喜那个的,因此试图的数据的变化会同事修改数据源,而数据源数据的变化也会立即反应到View上。
MVC和MVVM的区别并不是VM完全取代了C,ViewModel存在目的在于抽离Controller中展示的业务逻辑,而不是替代Controller,其它视图操作业务等还是应该放在Controller中实现。也就是说MVVM实现的是业务逻辑组件的重用。
MVC中Controller演变成MVVM中的ViewModel -MVVM通过数据来显示视图层而不是节点操作 -MVVM主要解决了MVC中大量的dom操作使页面渲染性能降低,加载速度变慢,影响用户体验vue在创建vm的时候,会将数据配置到实例中,然后通过Object.defineProperty方法,为数据动态的添加getter与setter方法。 当获取数据的时候,会触发对应的getter方法,当设置数据的时候,触发对应的setter方法。 然后当setter方法触发完成的时候,内部会进一步触发watcher,从而数据改变了,视图则更新操作完毕。