介绍一下 MVC MVVM

1. 什么是MVVM?

在MVVM框架下 视图和模型是不能直接通信 的,只能通过ViewModel进行交互,它能够监
听到数据的变化,然后通知视图进行自动更新,而当用户操作视图时,VM也能监听到视图
的变化,然后通知数据做相应改动,这实际上就实现了数据的 双向绑定 。并且V和VM可以
进行通信。

Model(模型)
模型是指代表真实状态内容的领域模型(面向对象),或指代表内容的数据访问层(以数据为中
心)。
View(视图)
就像在MVC和MVP模式中一样,视图是用户在屏幕上看到的结构、布局和外观(UI)。
ViewModel(视图模型)
视图模型是暴露公共属性和命令的视图的抽象。MVVM没有MVC模式的控制器,也没有MVP模式的presenter,有的是一个绑定器。在视图模型中,绑定器在视图和数据绑定器之间进行通信。

2. 什么是MVC?

MVC是应用最广泛的软件架构之一,一般MVC分为:Model(模型),View(视图),Controller(控制器)。 这主要是基于分层的目的,让彼此的职责分开.View一般用过Controller来和Model进行联系。Controller是Model和View的协调者,View和Model不直接联系。基本都是单向联系。M和V指的意思和MVVM中的M和V意思一样。C即Controller指的是页面业务逻辑。MVC是单向通信。也就是View跟Model,必须通过Controller来承上启下。

Model(模型)表示应用程序核心(如数据库)。

View(视图)显示效果(HTML页面)。

Controller(控制器)处理输入(业务逻辑)。

MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。   通常模型对象负责在数据库中存取数据。

View(视图)是应用程序中处理数据显示的部分。   通常视图是依据模型数据创建的。

Controller(控制器)是应用程序中处理用户交互的部分。   通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

3. MVC与MVVM的区别:

MVC和MVVM的区别并不是VM完全取代了C,ViewModel存在目的在于抽离Controller中展示的业务逻辑,而不是替代Controller,其它视图操作业务等还是应该放在Controller中实现。也就是说MVVM实现的是业务逻辑组件的重用。

  • MVC中Controller演变成MVVM中的ViewModel
  • MVVM通过数据来显示视图层而不是节点操作
  • MVVM主要解决了MVC中大量的dom操作使页面渲染性能降低,加载速度变慢,影响用户体验

相关推荐

  1. 介绍一下 MVC MVVM

    2024-01-05 17:34:01       63 阅读
  2. 介绍一下 MVC MVVM

    2024-01-05 17:34:01       49 阅读
  3. 影子,介绍一下自己

    2024-01-05 17:34:01       26 阅读
  4. 详细介绍一下TypeScript

    2024-01-05 17:34:01       26 阅读
  5. 介绍一下Feed流

    2024-01-05 17:34:01       24 阅读
  6. 请简要介绍一下HTML的发展史?

    2024-01-05 17:34:01       51 阅读
  7. 面试官:介绍一下MVC框架

    2024-01-05 17:34:01       51 阅读
  8. 简单介绍一下WebRTC中NACK机制

    2024-01-05 17:34:01       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-05 17:34:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-05 17:34:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-05 17:34:01       82 阅读
  4. Python语言-面向对象

    2024-01-05 17:34:01       91 阅读

热门阅读

  1. Spring之注解开发

    2024-01-05 17:34:01       63 阅读
  2. 阿里云服务器配置选择推荐方案

    2024-01-05 17:34:01       67 阅读
  3. LeetCode 45

    2024-01-05 17:34:01       69 阅读
  4. UE5.1_Python使用1

    2024-01-05 17:34:01       42 阅读
  5. Linux测试硬盘的读取速度

    2024-01-05 17:34:01       55 阅读
  6. 选择 省市区 组件数据 基于vue3 + elment-plus

    2024-01-05 17:34:01       51 阅读
  7. blender Texture Coordinate Node

    2024-01-05 17:34:01       52 阅读
  8. C++ Optins接口封装设置自动重连

    2024-01-05 17:34:01       52 阅读
  9. ArrayList 与 LinkedList 的选择与应用

    2024-01-05 17:34:01       67 阅读
  10. c++,mutex,unique_lock,recursive_mutex,shared_mutex对比分析

    2024-01-05 17:34:01       46 阅读
  11. 【微服务】微服务详解、模块化开发详解

    2024-01-05 17:34:01       56 阅读