为什么我们应该停止说“MVC”,而改说“RCMV”
发布: (2025年12月21日 GMT+8 07:01)
3 min read
原文: Dev.to
Source: Dev.to
MVC 的问题
MVC(模型、视图、控制器)是 web 开发中最流行的架构术语之一,但它并未完整描述现代 web 应用的实际工作方式。
它解释了关注点的分离,却省略了执行流程,而执行流程对于理解请求处理至关重要。
真正的请求流程
请求必须首先匹配到路由。典型的流程如下:
Request → Router → Controller → Model → View
这与经典的 “MVC” 顺序不同。正确的组件顺序是:
- Router(路由器) – 将传入请求匹配到路由。
- Controller(控制器) – 验证意图,协调请求,并委派职责。
- Model(模型) – 结构化并管理数据(规则、持久化、业务约束)。
- View(视图) – 渲染最终输出。
引入 RCMV
RCMV(Router, Controller, Model, View)并不是要取代 MVC;它 扩展 了 MVC,以反映现代应用实际响应请求的方式。
Router(路由器)
- 充当应用的真正入口点。
- 决定哪段代码应处理请求以及请求是否被允许。
- 没有路由,就没有页面加载、没有 API 响应,也不会有 CRUD 操作。
Controller(控制器)
- 仅在路由允许请求后才被激活。
- 协调请求,验证意图,并将工作委派给模型。
- 不 拥有数据;它负责对数据进行编排。
Model(模型)
- 负责结构化并管理数据。
- 强制执行规则、持久化和业务约束。
- 不 直接响应用户;响应由控制器完成。
View(视图)
- 最终的目的地,负责为客户端渲染响应。
为什么 RCMV 很重要
- 与 Laravel、Django、Rails、Express 等框架的工作方式保持一致。
- 通过揭示真实的入口点,帮助开发者调试实际问题。
- 通过使路由和请求处理显式化,帮助团队避免 spaghetti 代码。
- 与领域驱动设计(DDD)自然契合,促进更清晰的系统设计。
重要说明
RCMV 是 MVC 的 扩展,而不是替代。它仅在请求生命周期的第一步加入了路由器。
最后思考
MVC 是否足够,还是现代开发需要更好的思维模型?考虑采用 RCMV,以反映现代 web 应用的真实流程。