什么是MVC
MVC的基本思想
- View告诉controller要更新数据
- Controller操纵Model更新数据
- Model数据更新后将View现实的东西更新
MVC的一些问题
- 如果View想更新,那就必须先通知controller,在更新model,然后再更新自己;开发者需要同时维护View和Model层。
- View与Model层高度耦合,复用性差。(比如原本View中的是list,model上传中数据突然要以table来展示,这时就要重新写一遍View中的代码)
- 数据流混乱,Model更新时如果View层触发了新的更新,那就必须再来一遍。
MVP诞生了
MVP做了什么
将Controller改成了中介层Presenter,由中介层接受View的指令、通知View渲染、接受Model传来的数据以及对Model中的数据进行更新。
MVP解决了什么
MVP将View与Model解耦,由Presenter决定让View渲染什么,充分发挥了逻辑层的作用。
但是!没有解决MVC第一个问题。开发者仍然需要两头照顾View(DOM)和Model(数据)。
MVVM出现了
MVVM的解决方案
MVVM在View和Model中间添加了ViewModel层,该层与Model层进行数据绑定并与View相连,因此View可以直接读取ViewModel中的数据进行更新。
MVVM的数据和逻辑都在Model中定义,让开发者得以专注Model,而不必关心具体的DOM。