MVVM

MVVM 即 Model-View-ViewModel 的简写,即模型-视图-视图模型

  • 模型(Model)指的是后端传递的数据
  • 视图(View)指的是所看到的页面。
  • 视图模型(ViewModel)是 MVVM 模式的核心,它是连接 View 和 Model 的桥梁自动处理)。

视图模型有两个方向的作用:

  1. 将模型(Model)转化成视图(View),即将后端传递的数据转化成所看到的页面,实现的方式是:数据绑定
  2. 将视图(View)转化成模型(Model),即将所看到的页面转化成后端的数据,实现的方式是:DOM 事件监听

当这两个方向的数据转换都实现时,我们称之为数据的双向绑定

MVVM模型图解:

Vue 实现:

MVC

MVC 是 Model-View-Controller 的简写,即模型-视图-控制器

  • M 和 V 指的意思和 MVVM 中的 M 和 V 意思一样。
  • C 即 Controller 指的是页面业务逻辑

使用 MVC 的目的就是将 M 和 V 的代码分离。MVC 是单向通信,也就是 View 跟 Model ,必须通过 Controller 来承上启下

MVC 模型图解:

MVVM 与 MVC 最大的区别就是:MVVM 实现了 View 和 Model 的自动同步,也就是当 Model 的属性改变时,我们不用再自己手动操作 Dom 元素来改变 View 的显示,而是改变属性后该属性对应 View 层显示会自动改变双向绑定)。

总结

相同点

  • 目的相同:分离模型 Model 和视图 View

不同点

  • MVC

    • 构成:模型 Model - 视图 View - 控制器 Controller
    • 分为主动 MVC 和 被动 MVC
      • 主动 MVC:视图订阅数据更新
      • 被动 MVC:控制器操作视图
    • 渲染
      • 后端返回 HTML,利于 SEO
      • 后端返回数据,前端使用模板引擎或操作 DOM
  • MVVM

    • 构成:模型 Model - 视图 View - 视图模型 ViewModel
    • ViewModel 单向或双向数据绑定 View 和 Model 层,实现自动同步
    • 渲染
      • 后端减少关心视图,前端 SSR 利于 SEO
      • 前端减少操作 DOM