mvvm是什么?

2023-05-16

1、总结

一句话总结:vm层(视图模型层)通过接口从后台m层(model层)请求数据,vm层继而和v(view层)实现数据的双向绑定

2、mvc和mvvm的关系?

改进版

数据分离

视图模型层

c(控制层)被换成了vm(viewmodel)层

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。

mvvm层实现了前后端更好的分离(前端需要的数据只需要请求后端的接口即可

3.MVVM模式的优点以及与MVC模式的区别? 


MVVM模式的优点:
1、低耦合: 视图(View)可以独⽴于 Model 变化和修改,⼀个 ViewModel 可以绑定到不同的"View"上,当View变化的时候Model
可以不变,当Model变化的时候View也可以不变。
2、可重⽤性: 你可以把⼀些视图逻辑放在⼀个ViewModel⾥⾯,让很多 view 重⽤这段视图逻辑。
3、独⽴开发: 开发⼈员可以专注于业务逻辑和数据的开发(ViewModel),设计⼈员可以专注于⻚⾯设计。
4、可测试: 界⾯素来是⽐较难于测试的,⽽现在测试可以针对ViewModel来写。
MVVM 和 MVC 的区别:
mvc 和 mvvm 其实区别并不⼤。都是⼀种设计思想。


主要区别:
mvc 中 Controller演变成 mvvm 中的 viewModel,
mvvm 通过数据来显示视图层⽽不是节点操作。
mvvm主要解决了:
mvc中⼤量的DOM 操作使⻚⾯渲染性能降低,加载速度变慢,影响⽤户体验。

4、前端框架MVVM出现的最大意义是什么?

开发效率

前后端 业务逻辑 分离

接口

MVVM 的出现促进了 GUI 前端开发与后端业务逻辑的分离,极大地提高了前端开发效率。

MVVM用接口实现了前后端数据的通信,这样可以使前后端之间的业务逻辑没有什么关系。

MVVM在感觉上要比mvc模式前后端要分的更开

5、应用MVVM框架的vue.js框架的最主要作用是什么?

双向数据绑定

前端數據的統一

前端數據的統一:前端应用相同数据的位置实现了数据的统一
双向数据绑定:綁定后vue好dom數據保持統一,一動全動,是前端的

双向数据绑定中的两向分别为 view和viewmodel。

6、前端框架MVVM中的vm层是干嘛的?

状态 行为

DOM操作

ViewModel 是由前端开发人员组织生成和维护的视图数据层。在这一层,前端开发者对从后端获取的 Model 数据进行转换处理,做二次封装,以生成符合 View 层使用预期的视图数据模型。需要注意的是 ViewModel 所封装出来的数据模型包括视图的状态和行为两部分,而 Model 层的数据模型是只包含状态的,比如页面的这一块展示什么,那一块展示什么这些都属于视图状态(展示),而页面加载进来时发生什么,点击这一块发生什么,这一块滚动时发生什么这些都属于视图行为(交互),视图状态和行为都封装在了 ViewModel 里。这样的封装使得 ViewModel 可以完整地去描述 View 层。由于实现了双向绑定,ViewModel 的内容会实时展现在 View 层,这是激动人心的,因为前端开发者再也不必低效又麻烦地通过操纵 DOM 去更新视图,MVVM 框架已经把最脏最累的一块做好了,我们开发者只需要处理和维护 ViewModel,更新数据视图就会自动得到相应更新,真正实现数据驱动开发。看到了吧,View 层展现的不是 Model 层的数据,而是 ViewModel 的数据,由 ViewModel 负责与 Model 层交互,这就完全解耦了 View 层和 Model 层,这个解耦是至关重要的,它是前后端分离方案实施的重要一环。

View一般就是我们平常说的HTML文本的Js模板,里面可以嵌入一些js模板的代码,比如Mustache,比如jstl类似的模板伪代码

ViewModule层里面就是我们对于这个视图区域的一切js可视业务逻辑,举个例子,比如图片走马灯特效,比如表单按钮点击提交,这些自定义事件的注册和处理逻辑都写在ViewModule里面了

Module就更简单了,就是对于纯数据的处理,比如增删改查,与后台CGI做交互

7、MVVM最主要的特征是什么?

前后端分离

前后端分手大师——MVVM 模式

或者说前后端更好的分离(接口来实现前后端的通信)

8. 说⼀下什么是mvvm模式?


MVVM 是把 MVC 的 Controller 和 MVP 的 Presenter 改成了 ViewModel 。
View 的变化会⾃动更新到 ViewModel , ViewModel 的变化也会⾃动同步到 View 上显示。这种⾃动
同步是因为 ViewModel 中的属性实现了 Observer ,当属性变更时都能触发对应的操作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mvvm是什么? 的相关文章

随机推荐

  • 题目:输入三个整数x,y,z,把这三个数由小到大输出

    程序分析 xff1a 方式一 xff1a 先将两个数比较 xff0c 再将较大值与第三个数比较 xff0c 得到最大值 然后比较剩余的两个值 最后 xff0c 将数值以X lt Y lt Z的顺序输出 方式二 xff1a 将三个数分别两两进
  • 对话框QDialog

    对话框是 GUI 程序中不可或缺的组成部分 很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置 对话框通常会是一个顶层窗口 xff0c 出现在程序最上层 xff0c 用于实现短期任务或者简洁的用户交互 Qt 中使用QDialog类
  • 布局管理器~登录界面的搭建实例

    所谓的图形用户界面 xff08 GUI xff09 xff0c 本质上就是一堆组件的叠加 创建一个窗口 xff0c 把按钮放上面 xff0c 把图标放上面 xff0c 这样就成了一个界面 因此 xff0c 组件位置的放置尤其重要 xff0c
  • 常用控件及自定义控件

    QLabel QLabel可以用来显示文本 xff0c 图片和动画等 显示文本 xff08 普通文本 HTML xff09 通过QLabel类的setText函数设置显示的内容 void setText const QString amp
  • Dev-c++ 5.11版本调试方法(七小时折磨调试成功,超详细版)

    一 出现的问题是 1 设置断点之后点调试不出现蓝行 2 点了调试之后出现黑框 然后又闪退 3 添加查看之后也看不了变量的值 等等各种问题 xff08 查找 一个个试验 xff0c 还有整理 xff0c 花了起码六七小时 xff0c 几乎一天
  • Pycharm调试Debug篇(详细)

    pycharm中的debug模式 首先 xff0c 还是用示例说话 xff0c 我们书写一段简短的代码 xff0c 来帮我们完成今天要讲的内容 def sum demo x y for in range 2 x 43 61 1 y 43 6
  • Qt --- 信号与槽

    信号与槽概述 信号与槽是 Qt 框架引以为豪的机制之一 所谓信号与槽 xff0c 实际就是观察者模式 发布 订阅模式 当某个事件发生之后 xff0c 比如 xff0c 按钮检测到自己被点击了一下 xff0c 它就会发出一个信号 xff08
  • 不可不知道的串口常识

    串口 xff1a 串口是一个泛称 xff0c UART xff0c TTL xff0c RS232 xff0c RS485都遵循类似的通信时序协议 xff0c 因此都被通称为串口 串口 UART口 COM xff08 cluster com
  • 【Linux】磁盘分区和挂载

    目录 Linux磁盘分区和挂载 linux分区 查看所有设备挂载情况 挂载案例 步骤1 xff1a 新建一块硬盘 操作步骤2 xff1a 虚拟机硬盘分区 步骤3 xff1a 虚拟机硬盘分区格式化 步骤4 xff1a 将磁盘挂载到根目录下ne
  • RealSense D435i + imu 标定 Ros Melodic

    准备工作 ubuntu ros melodic环境 librealsense realsense ros 一 修改rs camera launch文件中的参数 修改之前装好的realsense环境中的 src realsense ros r
  • Jmeter性能测试(26)---生成HTML性能测试报告

    性能测试工具Jmeter由于其体积小 使用方便 学习成本低等原因 xff0c 在现在的性能测试过程中 xff0c 使用率越来越高 xff0c 但其本身也有一定的缺点 xff0c 比如提供的测试结果可视化做的很一般 不过从3 0版本开始 xf
  • 【mcuclub】时钟模块DS1302

    一 实物图 二 原理图 编号名称功能1VCC2双供电配置中的主电源供应引脚 DS1302工作于 VCC1和VCC2中较大者 当VCC2比VCC1高0 2V 时 xff0c VCC2 给 DS1302供电 当VCC1比VCC2高时 VCC1给
  • 【mcuclub】定时器/计数器

    一 简介 定时器实际上就是Soc当中的一个内部外设 定时器常与计数器扯到一起 xff0c 计数器也是Soc当中的一个内部外设 xff0c 计数器顾名思义是用来计数的 xff0c 就和我们的秒表一样 xff0c 秒表实际上就是一个计数器 xf
  • 基于A*算法自动引导车的路径规划(Matlab代码实现)

    x1f4a5 x1f4a5 x1f49e x1f49e 欢迎来到本博客 x1f4a5 x1f4a5 x1f3c6 博主优势 xff1a x1f31e x1f31e x1f31e 博客内容尽量做到思维缜密 xff0c 逻辑清晰 xff0c 为
  • 【文章转载】使用常见Matlab工具箱调节pid参数(飞机垂直速度控制系统设计)

    申明 xff1a 这是一篇转载文章 xff0c 本人害怕原链接失效 xff0c 故转载 xff0c 没有商用 xff0c 作者也可也私我删除 使用常见Matlab工具箱调节pid参数 小白的第一篇知乎文章 xff0c 如果有不准确的地方 x
  • 制作自己的ORBSLAM2数据集,并实现三维重建(代码自己写的)

    2 ORBSLAM2 测试自己拍摄的数据集 使用手机 摄像机等设备拍摄视频 xff0c 对应我们只能使用单目 Monocular 2 1对相机标定 首先我们要对相机进行标定 xff0c 使用 MATLAB 里面的标定工具包 标定好之 后创建
  • c++的好处

    1 更新迭代慢 xff0c 技术成熟的很高 xff0c 基本不会有太大的改动 xff0c 工作后学习压力小 2 C C 43 43 是系统编程层级唯一的一门高级语言 xff0c 速度快 xff0c 效率高 不用担心今后会被取代 3 C C
  • lacp协议

    LACP xff08 Link Aggregation Control Protocol xff0c 链路聚合控制协议 xff09 将多条链路逻辑上模拟成一条链路 xff0c 以增加网络带宽 xff08 通常网络多条链路情况下 xff0c
  • Windows 10 下安装Linux

    使用Hype V 快速安装 选择的Ubuntu 22 04 LTS 安装一切正常 xff0c 登录提示 登录以后提示connecting to sesman ip 127 0 0 1 port 3350 关闭查看菜单的 增强模式 xff0c
  • mvvm是什么?

    1 总结 一句话总结 xff1a vm层 xff08 视图模型层 xff09 通过接口从后台m层 xff08 model层 xff09 请求数据 xff0c vm层继而和v view层 实现数据的双向绑定 2 mvc和mvvm的关系 xff