MVC
经典的 MVC 架构将软件分为三部分:
- View:用户界面
- Controller:业务逻辑
- Model:数据存取
graph LR
V(View) --> C(Controller) --> M(Model) --> V
各部分之间的通信方式:
- 用户在视图层(View)发起操作请求(DOM 事件)
- 操作请求经路由(Router)交给控制器(Controller)处理
- 控制器处理业务逻辑,按需求调用 Model 存取数据
- 数据修改,用户请求新的数据,渲染到页面(View)上
当然用户不一定要在 View 层对 Controller 发起操作请求,有时用户也可以直接通过 API 来操作 Controller。
graph LR
U((User)) --> V(View) --> C(Controller) --> M(Model) --> V
U --> C
C --> V
V --> M
MVP
MVP 是对 MVC 的一个修改,取消用户和模型之间的交互,所有的业务逻辑都交给控制层,这里的控制层有个专用的名称,叫做 Presenter,意为“呈现者”,将数据呈现给用户的模块。
graph LR
V(View)-->P(Presenter)-->M(Model)
M-->P-->V
在 MVP 架构中,所有业务逻辑都由 Presenter 实现,View 专注于呈现页面。
MVVM
当下热门的前端应用架构。
graph LR
V(View)===VM(ViewModel)-->M(Model)
M-->VM
在 MVVM 模型中,View 和 ViewModel 通过 数据绑定 捆绑在了一起,所有的业务逻辑只需要在 VIewModel 中操纵相关的数据即可。数据发生变化,对应的视图也会跟随发生变化。
Vue 不是一个完全的 MVVM 模型,因为它在提供了数据绑定的基础上,也能手动操纵 DOM,这违背了 View-ViewModel 设计的初衷。
Vue 更像是一个 ViewModel 层的东西,提供对页面的数据绑定,但是又不负责与模型的交互。
评论区