JavaScript设计模式读书笔记(五)=>架构型设计模式,MVC,MVP,MVVM

2023-11-12

全系列目录

  1. JavaScript设计模式读书笔记(一)=> 创建型设计模式
  2. JavaScript设计模式读书笔记(二)=> 结构型设计模式
  3. JavaScript设计模式读书笔记(三)=> 行为型设计模式
  4. JavaScript设计模式读书笔记(四)=> 技巧型设计模式
  5. JavaScript设计模式读书笔记(五)=>架构型设计模式,MVC,MVP,MVVM

这节书中讲的个人感觉不是很清晰。。。还是转载一篇大神的把

原文链接:http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
作者:阮一峰
日期:2015年2月 1日

1. MVC

MVC模式的意思是,软件可以分成三个部分。

在这里插入图片描述

  • 视图(View):用户界面。
  • 控制器(Controller):业务逻辑
  • 模型(Model):数据保存

各部分之间的通信方式如下。

在这里插入图片描述

  • View 传送指令到 Controller
  • Controller 完成业务逻辑后,要求 Model 改变状态
  • Model 将新的数据发送到 View,用户得到反馈

1.1. 互动模式

接受用户指令时,MVC 可以分成两种方式。一种是通过 View 接受指令,传递给 Controller。

在这里插入图片描述
另一种是直接通过controller接受指令。

在这里插入图片描述

1.2. 实例:Backbone

实际项目往往采用更灵活的方式,以 Backbone.js 为例。

在这里插入图片描述

  1. 用户可以向 View 发送指令(DOM 事件),再由 View 直接要求 Model 改变状态。

  2. 用户也可以直接向 Controller 发送指令(改变 URL 触发 hashChange 事件),再由 Controller 发送给 View。

  3. Controller 非常薄,只起到路由的作用,而 View 非常厚,业务逻辑都部署在 View。所以,Backbone 索性取消了 Controller,只保留一个 Router(路由器) 。

2. MVP

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。

在这里插入图片描述

  1. 各部分之间的通信,都是双向的。

  2. View 与 Model 不发生联系,都通过 Presenter 传递。

  3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

3. MVVM

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

在这里插入图片描述

唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。

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

JavaScript设计模式读书笔记(五)=>架构型设计模式,MVC,MVP,MVVM 的相关文章

随机推荐

  • java面试笔试基本知识点总结

    1 正则表达式 正则表达式定义了字符串的模式 正则表达式可以用来搜索 编辑或处理文本 正则表达式并不仅限于某一种语言 但是在每种语言中有细微的差别 在编写处理字符串的程序时 经常会有查找符合某些复杂规则的字符串的需要 正则表达式就是用于描述
  • hikaricp druid比较_Spring Boot整合MybatisPlus和Druid

    在Java中 我比较ORM熟悉的只有Hibernate和Mybatis 其他的并未实践使用过 在这二者之间我更喜欢Mybatis 因为它精简 灵活 毕竟我是上年纪的程序员 喜欢自己写SQL 刚才有提到Mybatis 但是这里的重点是介绍My
  • 应用APK文件有效瘦身

    先说下前言 为什么要这样处理 随着项目的越来越多丰富功能 打包出来的apk体积日益变大 不说打包耗时 编译耗时 发布到应用市场 用户下载流量多 而且手机空间那么有限 用户不满意 咱们就要进行改变呗 没有体验 就没有用户 我先贴一张图 演示项
  • Python常用命令整理

    Anaconda常用命令 1 管理Conda 1 检查conda版本 conda version 2 升级当前版本conda conda update conda 2 管理 虚拟 环境 1 创建环境 创建一个名为python3的环境 指定P
  • Visual Studio 安装检测内存工具-Visual Leak Detetctor。(适用于VS2013、VS2015、VS2017、VS2019、VS2022版本)

    目录 前言 Visual Leak Detetctor 外部安装VLD 安装包 配置VLD 查看相关文件 将VLD配置到C 项目中 创建一个C 的空工程 配置头文件 配置lib库 测试Visual Leak Detetctor 前言 如果你
  • Got permission denied while trying to connect to the Docker daemon socket

    docker权限问题 需要将当前用户添加到docker组 sudo groupadd docker 添加docker用户组 sudo gpasswd a XXX docker 检测当前用户是否已经在docker用户组中 其中XXX为用户名
  • Mac 下 Arduino 开发环境搭建

    文章目录 Mac 下 Arduino 开发环境搭建 驱动 Arduino 安装 Arduino IDE 使用 Arduino IDE 准备跑路 VS Code 安装 VS Code 安装 Arduino 扩展 安装 C C 扩展 开始开发
  • 剑指Offer第二十七题:字符串的排列

    题目描述 输入一个字符串 按字典序打印出该字符串中字符的所有排列 例如输入字符串abc 则打印出由字符a b c所能排列出来的所有字符串abc acb bac bca cab和cba 思路 感觉是动态规划题 假设选第一个元素时 对于abc有
  • Redis+Lua限制发送量及遇到的坑

    业务中需要限制每个账号每天发送短信数量 如果没有超过设置的发送量 则正常发送 否则返回失败 解决思路 将账号ID yyyyMMdd组成redis的key value为当天的发送量 在发送前获取账号ID yyyyMMdd的值 如果没有超过发送
  • MachineLearningWu_13/P60-P64_Tensorflow

    P60 P64的学习目录如下 x 1 TF网络模型实现 以一个简单的TF的分类网络为例 将模型翻译成框架下的语义 即如右侧所表达的 当然上面对于分类网络的解释是一个简洁的解释 我们来进行更加具象的了解一下 左边是机器学习的三步骤 1 给定输
  • next_permutation 函数的使用 poj1256

    next permutation全排列函数是一个十分好用而且强大的函数 要想更好的了解这个函数可以看https blog csdn net howardemily article details 68064377 个人感觉写的特别好 里面有
  • <<视觉问答>>2021:Separating Skills and Concepts for Novel Visual Question Answering

    目录 摘要 一 介绍 二 相关工作 三 Skill Concept Composition in VQA 四 方法 4 1 Concept Grounding 4 2 Skill Matching 4 3 Training Procedur
  • 父子组件传值,子组件数据不更新

    项目场景 提示 这里简述项目相关背景 例如 查看列表中的某一条 显示这条的详情信息 这里的详情是一个弹框子组件 后台管理系统 问题描述 提示 这里描述项目中遇到的问题 在父子组件传参时 父组件将值传到子组件后 子组件进行数据展示 在第一次传
  • python3 request post请求中文例子

    下面是一个使用Python 3发送POST请求并包含中文数据的示例 import requests 请求URL url https example com api 请求头部设置 headers Content Type applicatio
  • Derby 和 Sqlite 数据库的配置与使用

    Derby 和 Sqlite 数据库的配置与使用 Derby 和 Sqlite 数据库 一种无需安装可直接使用的数据库 使用这两个数据库只需要下载其文件夹并配置其环境变量 然后导入对应的 jar 包即可直接使用 不同于 Mysq 和 Ora
  • 欧拉函数以及欧拉降幂

    大数幂运算指数太大的时候 我们需要进行降幂操作 首先呢 认识欧拉定理之前 先了解一下欧拉函数 欧拉函数性质 若p是一个质数 那么 p p 1 欧拉函数是积性函数 所以 nm n m 若n p k且p为质数 那么 n p k p k 1 证明
  • 耐人思考的“30秒法则”

    时间管理 30秒法则 也被称为 电梯法则 这个法则说得是 凡事要在最短的时间内把结果表达清楚 凡事要直奔主题 直奔结果 这个30秒法则 是由一个真实的故事引申出来的 美国知名咨询公司麦肯锡 有一位重要的大客户来公司洽谈 董事长因急事赶飞机
  • STM32毕业设计题目选题分享

    文章目录 1前言 2 STM32 毕设课题 3 如何选题 3 1 不要给自己挖坑 3 2 难度把控 3 3 如何命名题目 1前言 更新单片机嵌入式选题后 不少学弟学妹催学长更新STM32和C51选题系列 感谢大家的认可 来啦 以下是学长亲手
  • java 以流的形式从服务器下载文件并保存到本地

    1 基本实现流程 当我们想要下载网站上的某个资源时 我们会获取一个url 它是服务器定位资源的一个描述 下载的过程有如下几步 1 客户端发起一个url请求 获取连接对象 2 服务器解析url 并且将指定的资源返回一个输入流给客户 3 建立存
  • JavaScript设计模式读书笔记(五)=>架构型设计模式,MVC,MVP,MVVM

    全系列目录 JavaScript设计模式读书笔记 一 gt 创建型设计模式 JavaScript设计模式读书笔记 二 gt 结构型设计模式 JavaScript设计模式读书笔记 三 gt 行为型设计模式 JavaScript设计模式读书笔记