MVVVM与MVC的区别

5 篇文章 0 订阅
3 篇文章 0 订阅

一、概述
MVC,MVP,MVVM是三种常见的前端架构模式(Architectural Pattern),它通过分离关注点来改进代码组织方式。不同于设计模式(Design Pattern),只是为了解决一类问题而总结出的抽象方法,一种架构模式往往能使用多种设计模式。

MVC模式是MVP,MVVM模式的基础,这两种模式更像是MVC模式的优化改良版,他们三个的MV即Model,view相同,不同的是MV之间的纽带部分。本文主要介绍MVC与MVVM的应用与区别,因为MVP好像不是很常用。

在这里插入图片描述

MVC允许在不改变视图的情况下改变视图对用户输入的响应方式,用户对View的操作交给了Controller处理,在Controller中响应View的事件调用Model的接口对数据进行操作,一旦Model发生变化便通知相关视图进行更新。

按照上面这种方式分层,感觉多少有点强行MVC,因为Model层被弱化了。我们可以看看其他主流MVC框架是怎么分层的,拿BackBone举例。

下面展示一下代码:

var M = Backbone.Model.extend({  
  defaults:{name:"hello"} ,
  initialize : function(){   //new M时,会执行这个初始化函数。
    this.on("change",function(){   //监听change事件
      alert(1);
    })
  }
} 
var model = new M();
model.set("name","hi");    //改变模型的name值时,就会触发change事件,弹出1.其实这里只要改变模型,就会触发。

   这里Model的对象不只包含数据,也有对属性(name)的监听事件。所以backbone里的Model也不是纯Model,它有一部分Controller的功能。

还有更多详细的信息可以在网上找一下,下面来看下总结吧。

二、总结
在学习MVC与MVVM架构模式的过程中,经常会对分层的界限叫不准。比如说不清楚js里到底哪里算Model,哪里算Controller,Vue实例里面Model与ViewModel的严格界限在哪,有时候越想越感觉叫不准。当我从头到尾整理完这两种模式特点的时候,发现这个界限没有那么重要。我觉得重要的是,理解两种模式的基本思想,根据应用需求,选择适合自己业务的框架。MVVM自然有很多先进的地方,但有的项目选择BackBone可能会更适合。在实践中比较两种模式的各个框架的优缺点,选择适合自己的架构模式,更有利于项目的高效开发。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值