MV*

MVC 模型:表示系统的数据对象,数据对象包括数据及数据的数据的增删改查方法。数据变化时需要广播相关数据。

视图:表示用户所见以及交互的界面,成为模型数据的可视化呈现,视图对象可能包含其中的子视图,运用组合模式将所有子视图整合成一个一般性视图。各子视图共享同一个数据模型。单个子视图包含DOM元素、DOM元素的绑定事件、DOM元素的增删改方法、子视图的rander()方法、广播视图的变化(由控制器订阅并同步模型)、订阅数据模型广播的数据增删改事件。一般性视图对象包含各子视图的列表,及其rander()方法,该rander()方法会分别调用各子视图的rander()方法。rander()方法一般需要将模型作为参数,由控制器调用。一般现有框架由模板驱动渲染,因而不需要rander()方法。

控制器:连接模型与视图,将模型和视图作为参数传入。模型和视图作为控制器对象的成员,监听视图的变化,并同步模型数据。

消息在系统中的传输是从视图至控制器、至模型,然后,模型会广播发布一个事件,直接更新视图。

MVP 与MVC的区别: 在MVC模式中,视图可以根据模型中所发生的变化进行直接更新;

而在MVP模式中,模型与视图之间的所有通信必须经过表示器层。

视图不再订阅从模型中广播发出的事件而直接自更新,视图不应该直接包含事件处理代码,而应该从表示器驱动视图中的更新。

视图只是发出基于视图的事件,而表示器负责处理模型与视图之间的通信。

表示器同时订阅视图和模型中的事件,分别去更新模型和视图。

模型:与MVC的模型一致。

视图:与MVC的区别是,不再订阅数据模型广播的数据增删改事件,一般性视图也需要DOM元素的增删改方法,但这些方法被表示器调用时,必须执行所有子视图的相同名称的方法。

表示器:与MVC相比增加了订阅模型中的事件。

MVVM

learning
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里只属于前端工程师。