电脑之家
柔彩主题三 · 更轻盈的阅读体验

MVC和MVVM到底有啥区别?别再傻傻分不清了

发布时间:2026-03-24 06:31:18 阅读:4 次

做前端开发的朋友,可能常听人提起 MVCMVVM,但真要讲清楚它们差在哪,不少人一开口就卡壳。其实没那么玄乎,就像做饭用炒锅还是电饭煲——工具不同,干活的路子也不一样。

MVC:老派稳当的三件套

MVC 是 Model-View-Controller 的缩写,上世纪 70 年代就有的架构思想,后来被 Web 开发广泛借鉴。它把代码切成三块:

  • Model:管数据,比如从后端拿来的用户信息、商品列表;
  • View:管页面长啥样,就是你看到的 HTML 和样式;
  • Controller:管逻辑,比如用户点了“提交”,它去调接口、校验表单、决定跳哪页。

举个例子:你在电商网站点“加入购物车”,Controller 收到点击,告诉 Model 去更新购物车数据,再让 View 刷新小红点数字。整个过程是“手动档”——View 不会自己变,得 Controller 显式通知它重绘。

MVVM:自动同步的懒人模式

MVVM 是 Model-View-ViewModel 的缩写,代表像 Vue、Knockout 这类框架的思路。它多了一个 ViewModel 层,核心特点是双向绑定——数据变了,界面自动跟着动;界面上用户改了输入框,数据也自动更新。

比如用 Vue 写一个计数器:

<div id="app">
  <p>当前数量:{{ count }}</p>
  <button @click="count++">+1</button>
</div>
<script>
  new Vue({
    el: '#app',
    data: { count: 0 }
  })
</script>

你看不到手动操作 DOM 的代码,Vue 内部通过 ViewModel 把 data 和视图连起来了。你改 count,页面立刻刷新;反过来,如果其他代码改了 count,页面也一样动——不用你操心怎么“通知”。

关键区别,就三点

1. 数据驱动方式不同:MVC 是“我改完数据,再告诉你该画啥”;MVVM 是“我们绑定了,谁动了对方都知道”。

2. View 和 Model 的联系路径不同:MVC 中 View 只认 Controller,不直接碰 Model;MVVM 中 View 通过 ViewModel 间接读写 Model,但绑定关系由框架维护,开发者几乎不写更新逻辑。

3. 适用场景偏不同:传统后台渲染页面(比如 PHP + jQuery)常用 MVC 思路;而现代单页应用(SPA),尤其用 Vue、Angular 的项目,MVVM 更省力、更少出错。

打个比方:MVC 像你手写短信发给朋友,“我吃饭了”,发完就完事;MVVM 像开了微信语音通话,你说啥对方实时听见,对方说啥你也马上听到——中间那根线,框架已经帮你接好了。