MVC / MVVM 和 Vue3、React18 到底啥关系?

MVC / MVVM 和 Vue3、React18 到底啥关系?

我用最直白、最贴合你日常写代码的方式讲清楚,保证你瞬间通透。


一、先给结论(最重要)

  1. Vue3 = 标准的 MVVM 框架(官方自己定义的)
  2. React18 = 借鉴 MVVM 思想,但不是严格的 MVVM(官方叫数据驱动)
  3. 两者都彻底抛弃了 MVC(前端现在没人用 MVC 写项目)

二、Vue3 为什么是 MVVM?(完全对应)

Vue3 里的三个角色 = MVVM 的三个部分

1. View(视图)

就是你写的 <template>

vue 复制代码
<template>
  <div>{{ name }}</div>
  <button @click="changeName">改名字</button>
</template>
  • 只负责显示
  • 不写业务逻辑
  • 不操作数据

2. Model(数据层)

就是你从 接口请求的数据、本地数据

js 复制代码
const name = ref("张三");
  • 负责存数据
  • 负责接口请求

3. ViewModel(核心:双向绑定)

就是 Vue3 帮你做的 自动同步机制

  • View 变 → Model 自动变
  • Model 变 → View 自动变

你完全不用手动操作 DOM!

js 复制代码
// 你只需要改数据
const changeName = () => {
  name.value = "李四"; 
  // 页面自动更新!不用 document.getElementById
};

Vue3 = MVVM 的完美体现

  • 双向绑定:v-model 就是 MVVM 标志性功能
  • 数据驱动视图:改数据 = 改页面
  • View 和 Model 完全不直接接触

三、React18 是什么?(不是纯 MVVM,但思想一样)

React 官方定义:单向数据流的数据驱动框架

它没有双向绑定 ,但核心思想和 MVVM 完全一致。

React18 对应 MVVM

1. View(视图)

就是你写的 JSX

jsx 复制代码
<div>{name}</div>
<button onClick={changeName}>改名字</button>

2. Model(数据层)

就是 State + 接口数据

js 复制代码
const [name, setName] = useState("张三");

3. ViewModel(React 的"自动更新")

就是 State 驱动渲染

  • 改 State → 页面自动刷新
  • 但 View 变了,不会自动改 State(这是和 Vue 最大区别)
js 复制代码
const changeName = () => {
  setName("李四"); 
  // 页面自动更新!
};

一句话总结 React:

单向数据流版 MVVM,思想一样,只是没有双向绑定。


四、Vue3 和 React18 共同抛弃了什么?

抛弃了:MVC、原生 DOM 操作、jQuery 时代写法

旧写法(MVC/jQuery 风格,已淘汰)

js 复制代码
// 手动操作 DOM → MVC 风格
document.getElementById("btn").click(function(){
  document.getElementById("name").innerText = "李四";
});

Vue3 / React18 写法(MVVM 风格)

js 复制代码
// 只改数据,页面自动变 → MVVM 风格
name.value = "李四";
setName("李四");

五、一张表看懂 Vue3 / React18 与 MVVM 的关系

概念 MVVM 核心 Vue3 是否支持 React18 是否支持
视图View template/JSX ✅ 完全支持 ✅ 完全支持
数据Model 数据/接口 ✅ 完全支持 ✅ 完全支持
自动同步 View ↔ Model ✅ 双向绑定 ✅ 单向驱动
不用DOM 不操作原生节点 ✅ 完全不用 ✅ 完全不用
定位 架构模式 标准 MVVM 类 MVVM(数据驱动)

六、最通俗的最终总结(背会就够)

  1. Vue3 = 标准 MVVM

    • 有双向绑定(v-model)
    • 数据变页面变,页面变数据也变
  2. React18 = MVVM 思想(单向数据流)

    • 没有双向绑定
    • 数据变页面变,但页面变要手动同步
  3. 共同点(最重要)

    • 都是数据驱动视图
    • 都不用手动操作 DOM
    • 都彻底远离 MVC
    • 都是为了代码分离、好维护

最终一句话

你写 Vue3、React18 的每一天,都在写 MVVM,只是你没意识到而已!

相关推荐
萧瑟余晖18 小时前
Spring MVC文件上传SSE与WebSocket详解
websocket·spring·mvc
乌暮2 天前
# Spring 入门与 Spring MVC 实战指南:从零理解 IoC 到 RESTful 图书管理
java·开发语言·后端·学习·spring·mvc·restful
萧瑟余晖2 天前
Spring MVC拦截器异常处理与跨域详解
java·spring·mvc
弈栈录10 天前
Spring MVC 请求处理流程与核心源码解析
后端·架构·mvc
换元不配限13 天前
Android 架构演进实战:MVC → MVP → MVVM → MVI
android·架构·mvc·mvvm·mvp·mvi
云絮.14 天前
Spring MVC(二)
服务器·spring·mvc
only-lucky14 天前
QML深入学习七(MVC模块)
学习·mvc
1570925113415 天前
Android 架构模式详解:从 MVC、MVP 到 MVVM
android·架构·mvc
曹牧15 天前
Spring MVC:@RequestMapping
java·spring·mvc
wang_shu_mo_ran22 天前
Spring MVC 常用注解和用法(二)——url,cookie,session
java·mvc