MVVM简介

2023-11-03

目录

一 点睛

二 什么是MVVM

三 为什么要使用MVVM

四 MVVM的组成部分

五 MVVM实现者


一 点睛

  • View是视图层,也就是用户界面。前端主要由HTML和CSS来构成,为了更方便地展现ViewModel或者Model层的数据。
  • Model是指数据模型,泛指后端进行的各种业务逻辑处理和数据操控,主要围绕数据库系统展开。这里的难点主要在于需要和前端约定统一的接口规则。
  • ViewModel由前端开发人员组织生成和维护的视图数据层。在这一层,前端开发者从后端获取得到Model数据进行转换出来,做二次封装,以生成符合View层使用预期的视图数据模型。视图状态和行为都封装在ViewModel里。这样的封装使得ViewModel可以完整地去描述View层。

二 什么是MVVM

MVVM(Model-View-ViewModel)是一种软件架构设计模式,它是一种简化用户界面的事件驱动编程方式。

在MVVM架构中,是不允许数据和视图直接通信的,只能通过ViewModel来通信,而ViewModel就是定义了一个Observer观察者。ViewModel是连接View和Model的中间件。

  • ViewModel能够观察到数据的变化,并对视图对应的内容进行更新。
  • ViewModel能够监听到视图的变化,并能够通知数据发生变化。

到此,我们就明白了,Vue.js就是一个MVVM的实现者,它的核心就是实现了DOM监听与数据绑定。

MVVM源自于经典的MVC(Model-View-Controller)模式。MVVM的核心是ViewModel层,负责转换Model中的数据对象来让数据变得更容易管理和使用,其作用如下:

该层向上与视图层进行双向数据绑定。

向下与Model层通过接口请求进行数据交互。

MVVM已经相当成熟了,主要运用但不仅仅在网络应用程序开发中。当下流向的MVVM框架有Vue.js、AugularJS等。

三 为什么要使用MVVM

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

四 MVVM的组成部分

五 MVVM实现者

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

MVVM简介 的相关文章

随机推荐

  • Grayhill 072 16进制键盘扫描器的Verilog实现

    知识点 1 按键的机械原理 如何用一个module 模拟出按键的功能 体现的是抽象描述的能力 2 同步装置 因为按键输入的是异步信号 必须经过同步 因为s row 信号在经过同步装置后立马进入一个组合逻辑 为了消除潜在的冒险 这个例子中同步
  • Linux C/C++ PGO优化说明

    PGO Profile Guided Optimization 是指利用程序运行过程中采集到的 profile 数据 来重新编译程序以达到优化效果的 post link 优化技术 其原理认为 对于特征相似的 input 程序运行的特征也相似
  • RabbitMQ消息消费失败后的处理方案

    Q 业务系统之间通过MQ进行交互 当消费者发生未知异常时 消息消费失败 如何处理才保证消息的消费的可靠性 A 从如下几点考虑 何时ack 无论消息成功还是失败 都会ack 消息不会堆积在MQ中 只有成功才ack 消息堆积在MQ中 消费日志
  • 散列表的查找(哈希函数)

    哈希函数Hash 散列表的查找都是以关键字的比较为基础的 查找速度极快O 1 查找效率与元素个数n无关 直接找到 选取某个函数 依该函数按关键字计算元素的存储位置 并按此存放 给出关键字 gt 计算元素的存储位置 并存放 查找时 给出关键字
  • 2020年“华为杯”第十七届中国研究生数学建模竞赛B题心得(满纸荒唐言,一把辛酸泪)

    满纸荒唐言 一把辛酸泪 都云作者痴 谁解其中味 纪念2016 2020所有的数学建模论文 古人说得好 书到用时方恨少 事非经过不知难 做数学建模的我 方法用时真恨少 建模经过更知难 2020年9 17 21 应该是我最后一次参加数学建模比赛
  • 多线程:Java两个线程,一个打印A-Z,另一个打印1-26,输出结果:A1 B2 C3 ...... Z26

    最近看到一个题 很有意思 就是在Java里实现两个线程 一个线程打印字母 也就是 ABCD Z 另一个线程打印数字 也就是 1234 26 但是这两个线程需要交替打印 第一次字母线程先打印A 然后数字线程打印1 第二次字母线程先打印B 然后
  • vue & animate.css 使用讲解

    Animate css 库 官网 https animate style Vue 讲解 transition 官网 https cn vuejs org v2 guide transitions html 1 安装库 npm install
  • 人工智能是什么?人工智能行业前景如何

    人工智能是什么 人工智能行业前景如何 很多人都对人工智能领域感兴趣 那么究竟什么是人工智能 人工智能 英语 Artificial Intelligence 缩写为AI 亦称智械 机器智能 指由人制造出来的机器所表现出来的智能 通常人工智能是
  • 如何在eclipse中打开查看jar包(.class文件)

    打开Help Eclipse Marketplace 输入Enhanced Class Decompiler 选择插件 点解Install 安装完毕后重启 第一次打开 class文件 选择文件 点击鼠标右键 然后选择open class w
  • TTL设置多少合适?阿里域名解析TTL设置多少

    TTL设置多少合适 阿里域名解析TTL设置多少 TTL是Time To Live的缩写 指生存时间 而域名解析中提到的TTL值是指全国各地的localdns服务器中缓存解析结果的时间周期 简单来说就是一个网站www sss com 主机服务
  • L1-096 谁管谁叫爹 - java

    L1 096 谁管谁叫爹 时间限制 200 ms 内存限制 64 MB 题目描述 咱俩谁管谁叫爹 是网上一首搞笑饶舌歌曲 来源于东北酒桌上的助兴游戏 现在我们把这个游戏的难度拔高一点 多耗一些智商 不妨设游戏中的两个人为 A 和 B 游戏开
  • windows server 2012 安装完只有命令行

    今天在安装完windows server 2012 只有命令行 发现没有桌面 然后在别人的提醒下 才发现忘记安装gui了 这个时候 我也懒的重新安装一遍 所以就在网上找如何能够解决问题的方法 下面为解决方案 dism online enab
  • sqli-labs (less-21)

    sqli labs less 21 进入21关 输入用户名与密码 发现跟20关基本一样 这里我们猜想也是在cookie的位置进入注入 利用Cookies Manager 抓取到cookie信息后 发现竟然是一串字母 这里就很懵了 但我们仔细
  • Flask简单Mock Server

    Mock Server充当的角色 Mock server在实际项目中的意义就相当于数据库 将我想要的数据返回给我就行 我并不关心你怎么逻辑处理的 一般的应用程序请求方式是GET和POST Flask自带的request使用 request
  • docker登陆mysql提示密码错误(转载)

    正文 进入mysql报错 1045 28000 原因 mysql5 7 首次安装后 需要修改root的默认密码才能使用 为了解决这个问题 来来回回试了很多遍 这里就不说过程了 下面记录下目前看正确的处理步骤 docker安装Mysql 1
  • python3.8安装dlib库(Windows下)

    自己在网上找了半天 各种让安装这个 让安装那个的 然后最后也没搞成 就试着这样搞 竟然 了 教程 电脑之前已经安装好Anaconda 打开里面的 cmd prompt 1 安装cmake pip install cmake 或者利用镜像下载
  • python之t分布

    import numpy as np from scipy stats import norm from scipy stats import t import matplotlib pyplot as plt print 比较t 分布与标
  • idea 使用lombok @Slf4j ,找不到log,解决方案

    1 安装lombok插件 2 如果安装了lombok插件 但是编译的时候还是找不到log 检查Annotation Processors gt Enable annotation processing 是否勾选
  • Vue+ant-design-vue 表格实现可拖动的伸缩列

    应客户要求 表格要实现列宽可以自主调节 用户可以根据自己的喜好 拖动列边框 左右拖动实现列宽的扩大和缩小 ant design vue官方文档中 table组件中提供了此功能的示例代码 于是我满怀开心的复制到了我的项目中 结果处处报错 红彤
  • MVVM简介

    目录 一 点睛 二 什么是MVVM 三 为什么要使用MVVM 四 MVVM的组成部分 五 MVVM实现者 一 点睛 View是视图层 也就是用户界面 前端主要由HTML和CSS来构成 为了更方便地展现ViewModel或者Model层的数据