首页 > 其他分享 >MVVM 和 MVC 区别是什么?

MVVM 和 MVC 区别是什么?

时间:2023-11-02 15:22:45浏览次数:53  
标签:MVVM 区别 视图 Controller MVC Model View

1、基本定义

MVVM 基本定义

MVVM 即 Model-View-ViewModel 的简写,即模型-视图-视图模型,模型(Model)指的是后端传递的数据,视图(View)指的是所看到的页面,视图模型(ViewModel)是 mvvm 模式的核心,它是连接 view 和 model 的桥梁。它有两个方向:

  1. 一是将模型(Model)转化成视图(View),即将后端传递的数据转化成所看到的页面,实现的方式是:数据绑定

  2. 二是将视图(View)转化成模型(Model),即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听,这两个方向都实现的,我们称之为数据的双向绑定

MVC 基本定义

MVC 是 Model-View- Controller 的简写。即模型-视图-控制器。M 和 V 指的意思和MVVM 中的 M 和 V 意思一样。C 即 Controller 指的是页面业务逻辑,使用 MVC 的目的就是将 M和 V 的代码分离。MVC 是单向通信。也就是 View 跟 Model,必须通过Controller 来承上启

2、使用场景

主要就是 MVC 中 Controller 演变成 MVVM 中的 viewModel,MVVM 主要解决了 MVC 中大量的 DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验,vue 数据驱动,通过数据来显示视图层而不是节点操作, 场景:数据操作比较多的场景,需要大量操作 DOM 元素时,采用 MVVM 的开发方式,会更加便捷,让开发者更多的精力放在数据的变化上,解放繁琐的操作 DOM 元素

3、MVVM 和 MVC的区别

MVC 和 MVVM 其实区别并不大,都是一种设计思想,MVC 和 MVVM 的区别并不是 VM完全取代了 C,只是在 MVC 的基础上增加了一层 VM,只不过是弱化了 C 的概念,ViewModel存在目的在于抽离 Controller 中展示的业务逻辑,而不是替代 Controller,其它视图操作业务等还是应该放在 Controller 中实现,也就是说 MVVM 实现的是业务逻辑组件的重用,使开发更高效,结构更清晰,增加代码的复用性

标签:MVVM,区别,视图,Controller,MVC,Model,View
From: https://www.cnblogs.com/yuhuo123/p/17805499.html

相关文章

  • 会议一体机单系统与双系统的区别在哪里?怎么选择
     随着科技的进步,会议一体机作为高效会议协作的工具,已经经历了不断的演进与升级变更,其中,单系统与双系统是两种常见的配置选择。今天小编就从不同的角度来讲解下两者的区别,以供大家参考。  单系统会议一体机通常具有更简单的设计,仅配备一个操作系统和应用程序,这种一体机通常更加可......
  • C语言中静态函数和非静态函数的区别
     C语言中,静态函数和非静态函数的区别主要体现在以下方面:可见性:静态函数只能在当前文件内使用,不能被其他文件调用,而非静态函数可以被当前文件以外的其他文件调用,具有全局可见性。生命周期:静态函数在程序运行期间一直存在,不会被释放,而非静态函数则是在被......
  • Spring、Spring5、Spring MVC、 Spring boot、Spring Cloud的区别
    官方解释Spring:是一个开源框架,用于创建Java应用程序的企业级框架。Spring5:是Spring框架的最新版本,增加了一些新特性,如响应式编程支持等。其核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMVC)、业务层(IOC)、持久层(jdbcTemplate)等都提供了多种配置解决方案。S......
  • Ts的值类型-unknow 、any、void、never区别及场景
    Ts的类型设计理念在于集合理论,上层的类型集合了下层的类型;如上图所示,unknow为顶端类型,never为底端类型。除此之外ts还提供了高级的类型:并集和交集等高级类型。any类型当一个值类型为any时,则表示它可以为任何类型的值,any类型本质是不对值进行合法性校验,所以任何语法在这个值......
  • RequestBody 和 RequestParam的区别
    @RequestBody,需要使用传入json格式,专门为了application/json和application/xml等设置的会自动装配到实体类中代码@RequestMapping(value="test3",method=RequestMethod.POST)publicvoidtest3(@RequestBodyUserDtouserDto){//from-data......
  • google analytics , looker , bigquery的区别
    GoogleAnalytics、Looker和BigQuery是Google提供的三种不同的数据服务,它们各自有不同的用途和功能。GoogleAnalytics:主要用途:GoogleAnalytics是一种网站和应用程序分析服务,它能帮助您理解用户如何与您的网站或应用互动。它收集关于页面浏览量、用户会话、用户行为......
  • 10、SpringMVC之处理Ajax请求
    创建名为spring_mvc_ajax的新module,过程参考9.1节和9.5节10.1、SpringMVC处理Ajax请求10.1.1、页面请求示例<inputtype="button"value="测试SpringMVC处理Ajax请求"onclick="testAjax()"><scripttype="text/javascript">functiontestA......
  • java new(创建)对象时结尾带上{}和不带的区别
    定义一个对象publicclassPerson{publicvoidsay(){System.out.println("hello");}}熟悉(正常)的创建对象方式Personp1=newPerson();不熟悉的创建方式Personp2=newPerson(){};那二者有什么区别?我们可以先打印出类的信息看看public......
  • git fetch 和 pull 的区别
        gitpull=gitfetch+gitmergefetch同pull的区别在于:gitfetch:是从远程获取最新版本到本地,不会自动merge.而gitpull是从远程获取最新版本并merge到本地仓库.从安全角度出发,gitfetch比gitpull更安全,因为我们可以先比较本地与远程的区别后,选择性的合并。gitpush默......
  • vue3 compositon api 和 common下写业务逻辑的区别
    区别:Vue3的CompositionAPI是一种处理和组织Vue组件内部逻辑的方式。它可以让你更灵活地组织和复用你的代码。使用compositionAPI可以将组件的逻辑拆分为小的、独立的函数或模块,并使用setup函数进行组合和重用。这对于一些复杂的业务逻辑或需要高内聚、低耦合的逻辑非......