MVC和MVVM的关系

本文详细介绍了MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)两种设计模式。MVC模式中,Model负责数据操作,View显示页面,Controller处理业务逻辑。MVVM模式下,Model保存页面数据,View展示视图,而ViewModel作为协调者,实现了Model与View的双向绑定。这两种模式在Web开发中广泛应用,提供对HTML、CSS和JavaScript的控制。

MVC的全名是Model View Controller,是一种使用“模型-视图-控制器”设计创建Web应用程序的模式,同时提供了对HTML、CSS和JavaScript的完全控制。

            M为model层:model层职能单一,只负责操作数据库执行对应的Sql语句,进行数据的CRUD。

            V为view层:每当用户操作了页面,如果进行业务处理,都会通过网络请求,去访问后端的服务器。

           C为controller层:也就是业务逻辑处理层,封装了一些具体业务逻辑的处理代码,为了保证职能单一,只负责处理业务逻辑不负责处理数据。

  

MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。主要把每个页面分为M,V,VM三部分其中M指的是后端传递的数据。V指的是所看到的页面。VM 是mvvm模式的核心,VM是M和V之间的调度者。

           M这里的M保存的是每个页面中单独的数据。

           V就是每个页面中的HTML结构。

           VM是一个调度者分割了M与V,每当V层想要获取保存后的数据都需要通过VM。

 

### MVCMVVM架构模式的区别 #### 1. 定义与结构 MVC(Model-View-Controller)是一种用于实现用户界面的经典设计模式,主要应用于服务器端开发环境,如JavaWeb应用。此模式将应用程序分为三个核心组件:模型(Model),视图(View)以及控制器(Controller)[^1]。 相比之下,MVVM(Model-ViewModel-View)更侧重于客户端框架的设计理念,特别是对于现代JavaScript库/框架而言,比如Vue.js。它同样由三部分组成——数据模型(Model), 视图(View) 视图模型(ViewModel),其中ViewModel充当着连接ViewModel之间桥梁的角色[^2]。 #### 2. 数据流方向 在传统的MVC体系里,当用户操作触发事件时,请求会被发送给相应的controller处理;接着controller会更新model的数据状态并通知view重新渲染页面显示最新的信息。这种交互方式通常被称为双向绑定机制下的推式通信(Push-based Communication)[^1]。 而在MVVM模式下,则采用了更加简洁明了的方式来进行UI同步工作。通过引入响应式的属性观察者特性,任何发生在data对象上的变动都会自动反映到DOM节点上而无需显式调用render方法刷新整个界面上的内容呈现效果。这也就是常说的一次性声明周期内的单向数据流动(Single-direction Data Flow)。 #### 3. 控制逻辑位置 由于历史原因,在许多基于MVC构建的应用程序中,业务规则往往被放置到了Controllers内部去执行。然而随着时间的发展技术的进步,人们逐渐意识到这样的做法容易造成职责不清的问题,并且不利于后期维护工作的开展。因此现在推荐的做法是尽可能把复杂的商业流程封装进Service Layer里面以便更好地遵循单一责任原则(SRP)[^3]。 相反地,在采用MVVM范型所搭建起来的项目当中,所有的控制指令都集中定义于对应的ViewModel类之中。这样一来不仅能够保持良好的分层关系,同时也方便开发者利用工具链提供的调试功能快速定位潜在错误所在的位置[^4]。 ```javascript // Vue.js中的简单MVVM实例 const app = new Vue({ el: '#app', data() { return { message: 'Hello, world!' } }, methods:{ updateMessage(newMsg){ this.message=newMsg; } } }); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值