侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

浅谈 Vue 与 MVVM

barwe
2022-03-28 / 0 评论 / 0 点赞 / 780 阅读 / 907 字
温馨提示:
本文最后更新于 2022-04-03,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

MVC

经典的 MVC 架构将软件分为三部分:

  • View:用户界面
  • Controller:业务逻辑
  • Model:数据存取
graph LR V(View) --> C(Controller) --> M(Model) --> V

各部分之间的通信方式:

  1. 用户在视图层(View)发起操作请求(DOM 事件)
  2. 操作请求经路由(Router)交给控制器(Controller)处理
  3. 控制器处理业务逻辑,按需求调用 Model 存取数据
  4. 数据修改,用户请求新的数据,渲染到页面(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 层的东西,提供对页面的数据绑定,但是又不负责与模型的交互。


Reference

https://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html

0

评论区