首页 > 其他分享 >MVC和MVVM

MVC和MVVM

时间:2023-10-24 11:05:26浏览次数:35  
标签:Vue MVVM ViewModel 视图 MVC Model 数据 View

MVC

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范。

  • Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  • View(视图)应用程序中处理数据显示的部分。
  • Controller(控制器)是应用程序中处理用户交互的部分。
    缺点:
  • 前后端职责纠缠不清
  • 对前端的发挥有一定的局限性

MVC和MVVM_数据

MVVM

MVVM全名是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。

  • Model(模型) 处理业务逻辑的操作
  • View(视图) 用于渲染数据的页面
  • VModel 负责视图和数据的双向数据绑定

MVVM的核心是 ViewModel 层,负责转换 Model 中的数据对象来让数据变得更容易管理和使用,其作用如下:

  • 该层向上与试图层进行 双向数据绑定 ???
  • 向下与 Model 层通过接口请求进行数据交互

MVC和MVVM_Vue_02

为什么要使用MVVM MVVM模式主要的目的是分离视图(View)和模型(Model),有几大好处:

  • 低耦合:视图(View)可以独立与Model变化和修改,一个ViewModel 可以绑定到不同的 View上,当 View变化的时候 Model 可以不变,当Model变化的时候View也可以不变。
  • 可复用:你可以把一些视图逻辑放在一个 ViewModel里面,让更多 VIew重用这段视图逻辑
  • 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计
  • 可测试:界面素来是比较难于测试的,而现在测试可以针对 ViewModel 来写

什么是Vue

Vue是一个遵循MVVM模式的渐进式框架.它的作者尤雨溪(Evan You)是一位美籍华人,下面是作者本人对于Vue框架产生的描述:"Vue 一开始完全是一个个人兴趣项目。2013 年的时候我还在谷歌工作,那时候前端框架还处于比较草莽的阶段,React 刚刚发布还没几个人知道,最成熟的是 AngularJS (Angular 1)。我当时一方面是想自己实现一个简单的框架练练手,另一方面是想尝试一下用 ES5 的 Object.defineProperty 实现数据变动侦测。众所周知 AngularJS 使用的是脏检查,而当时大部分的应用还需要支持 IE8,所以不能全面使用 ES5,而个人项目则不需要考虑这些,(所以Vue项目从一开始就不支持IE8以下版本)Vue 就是这样作为一个实验性质的项目开始的"

读音:

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。简单小巧的核心,渐进式技术栈,足以应付任何规模的应用。

特点

  • Vue比较易学,体积更小(30多kb),灵活,高效。
  • Vue的本身只关注UI视图,可以更简单的导入Vue插件和第三方库
  • Vue通过Vue对象把数据和视图完全分离开来,对视图的改变无需在操作DOM元素,只需要操作对应的数据,即可改变对应的视图结构,也就是通过双向数据绑定把View层和Model层连接了起来,通过对数据的操作就可以完成对页面视图的渲染。


标签:Vue,MVVM,ViewModel,视图,MVC,Model,数据,View
From: https://blog.51cto.com/u_15269968/8001576

相关文章

  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(1)
    在我们的SqlSugar的开发框架中,整合了Winform端、Vue3+ElementPlus的前端、以及基于UniApp+Vue+ThorUI的移动前端几个前端处理,基本上覆盖了我们日常的应用模式了,本篇随笔进一步介绍前端应用的领域,研究集成WPF的应用端,循序渐进介绍基于CommunityToolkit.Mvvm和HandyControl的WPF应用......
  • Spring MVC入口Servlet详解(HttpServletBean,FrameworkServlet,DispatcherServlet )
    SpringMVC中DispatcherServlet前端控制器是web服务器的入口,那么它是怎么样进行初始化的,是怎么样进行工作?继承关系1.HttpServletBean主要做一些初始化的工作,将web.xml中配置的参数设置到Servlet中。比如servlet标签的子标签init-param标签中配置的参数。2.FrameworkServlet将Serv......
  • 8、SpringMVC之RESTful案例
    阅读本文前,需要先阅读SpringMVC之RESTful概述8.1、前期工作8.1.1、创建实体类Employeepackageorg.rain.pojo;importjava.io.Serializable;/***@authorliaojy*@date2023/10/19-21:31*/publicclassEmployeeimplementsSerializable{privateInte......
  • Spring MVC
    一、SpringMVC子父容器问题因为SpringMVC属于Spring的子框架,所以SpringMVC中可以使用Spring框架的全部内容。Spring官方为SpringMVC专门定义了一个容器,这个容器里面放SpringMVC中全部Bean,且这个容器属于Spring容器的子容器。有这样的一个规定:SpringMVC子容器可以调用Spr......
  • MTV与MVC模型
    MTV#MTV:Django号称是MTV模型M:modelsT:templatesV:views MVC#MVC:Django本质也是MVC模型M:modelsV:viewsC:controller#vue框架:MVVM模型 ......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(12) -- 使用
    1、代码生成工具Database2Sharp生成WPF界面代码WPF应用端的基础接口,和Winform端、Vue3+ElementPlus前端一样,都是调用SqlSugar开发框架中的相关业务接口,如果对我们的SqlSugar框架还有疑问,可以参考我的随笔集《SqlSugar开发框架》进行系列的学习或了解。要了解项目的快速生成,需要......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉
    在我们开发的前端项目中,往往为了方便,都需对一些控件进行自定义的处理,以便实现快速的数据绑定以及便捷的使用,本篇随笔介绍通过抽取常见字典列表,实现通用的字典类型绑定;以及通过自定义控件的属性处理,实现系统字典内容的快捷绑定的操作。1、下拉列表的数据绑定在我们创建下拉列表的......
  • MVCC总结
    MVCC机制是什么MVCC,即**Multi-VersionConcurrencyControl**(多版本并发控制)。它是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。个人理解MySQL的InnoDB存储引擎支持事务。事务的四大特性:A原子性、C一致性、I隔离性、D......
  • SpringMVC自定义处理返回值demo和异步处理模式DeferredResult demo
    搭建自定义返回值处理器demo新建springboot项目修改pom.xml<!--新增依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><gro......
  • untiy小游戏——牧师与魔鬼_MVC架构
    牧师与魔鬼_MVC架构游戏介绍​牧师和魔鬼是一款益智游戏,您将在其中帮助牧师和魔鬼过河。河的一侧有3个祭司和3个魔鬼。他们都想去这条河的另一边,但只有一条船,这条船每次只能载两个人。而且必须有一个人将船从一侧驾驶到另一侧。您可以单击按钮来移动它们,然后单击移动按......