MVC 软件架构模式

简介: MVC 软件架构模式

1、MVC(Model-View-Controller)

MVC 是一种软件架构模式,是模型 (model)-视图 (view)-控制器 (controller) 的缩写。MVC 这一概念是来源于后端的框架构建思想,是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。


View 层:视图层,前端开发中的 DOM 层,作用是给用户展示各种信息


Model 层:数据层,数据可以是我们固定的写死的数据,但更多的是来自服务器,从网络上请求下来的数据


Controller 层:控制层,是连接视图和模型的桥梁,具体是指接受用户的输入并调用模型和视图去完成用户的需求

使用 MVC 将数据模型(modele)、页面视图(View)、业务逻辑(Controller)分离能有效地解决如下问题:


用 store 数据更新代替页面频繁 dom 操作,简化业务代码;

全局暂存数据,避免重复请求数据资源;

模块解耦,组件化开发,避免功能模块间互相影响;

局部刷新,减少页面刷新次数,提高用户体验;

2、MVC 的具体组成部分

2.1:M(Model))层:即数据模型层,数据全都归它管,和数据相关的都放在这里,大概长这个样子:

const model = {
    获取数据(){
        获取数据
    },
    储存数据(){
        储存数据
    },
    增(){},
    删(){},
    改(){},
    查(){}    //等一系列数据操作的方法
}

可以看到都是和数据有关系的功能,模块的数据、对数据的操作方法等等,只要是和数据有关的都放在 model 层。

2.2:V(View)层:即视图层,页面相关的展示元素和组件等,只要是和视图相关都放在这里,大概这个样子:

const view = {
    el: "视图上已经存在用来装字符串模板的容器,一般是一个div"
    html: "视图字符串模板",
    渲染(){
        把模板渲染到视图上
    }
}

2.3:C(Controller)层:即控制层,M 和 V 不管的,都归这一层管,比如:事件绑定,数据存储之类的

const controller = {
    初始化(){
        view.渲染()
        controller.绑定事件()
    },
    有关事件绑定的信息:{    //表驱动编程:用查表的方法获取值
        绑定主体1 : 事件1,
        绑定主体2 : 事件2,
    },
    绑定事件(){
        把事件绑定到相应主体上
    },
    事件1(){
        做一些事情
    },
    事件2(){
        做一些事情
    },    
}

以上是 MVC 组成部分的简要介绍,主要的思路就是在数据发生变化的时重新渲染视图,减少了从页面获取 dom 元素再把它放回去的步骤,那么如果监听数据变化呢?这里就可以用到 eventBus 实现对象间通信了。

3、EventBus 通信

eventBus 是一套监听触发机制,它提供了 on()、off() 和 trigger() 等 API,其中主要的 API 是 on() 和 trigger() 方法,on() 用于监听事件,trigger() 用于触发事件,由此可实现模块化开发的对象间通信,使用 eventBus 可以满足最小知识原则,model 层 和 view 层 互相不知道对方的细节,但是却可以调用对方的功能。

import $ from 'jquery'
const eventBus = $({})

这里借用一下 jQuery 对象,一个 jQuery 对象同时拥有监听事件的方法和触发事件的方法,我们可以利用它做个监视器~

比如我们在 model 的改方法里加一个事件触发:

改(){
    修改了一些数据;
    eventBus.trigger("数据被修改啦")
}

然后在 controller 中监听这个事件

初始化(){
    view.渲染(数据)
    controller.绑定事件()
    eventBus.on("数据被修改啦", () => {
        view.渲染(数据)
    })
}
目录
相关文章
|
3天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
11天前
|
存储 前端开发 调度
Flux 与传统的 MVC 架构模式区别
Flux是一种用于构建用户界面的架构模式,与传统的MVC架构不同,它采用单向数据流,通过Dispatcher统一管理数据的分发,Store负责存储数据和业务逻辑,View只负责展示数据,使得应用状态更加可预测和易于维护。
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
143 6
|
1月前
|
缓存 监控 API
探索微服务架构中的API网关模式
【10月更文挑战第5天】随着微服务架构的兴起,企业纷纷采用这一模式构建复杂应用。在这种架构下,应用被拆分成若干小型、独立的服务,每个服务围绕特定业务功能构建并通过HTTP协议协作。随着服务数量增加,统一管理这些服务间的交互变得至关重要。API网关作为微服务架构的关键组件,承担起路由请求、聚合数据、处理认证与授权等功能。本文通过一个在线零售平台的具体案例,探讨API网关的优势及其实现细节,展示其在简化客户端集成、提升安全性和性能方面的关键作用。
71 2
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
64 2
|
1月前
|
存储 缓存 监控
探索微服务架构中的API网关模式
【10月更文挑战第1天】探索微服务架构中的API网关模式
91 2
|
3月前
|
设计模式 前端开发 数据库
哇塞!Rails 的 MVC 架构也太牛了吧!快来看看这令人惊叹的编程魔法,开启新世界大门!
【8月更文挑战第31天】《Rails中的MVC架构解析》介绍了Ruby on Rails框架核心的MVC设计模式,通过模型(Model)、视图(View)和控制器(Controller)三部分分离应用逻辑,利用Active Record进行数据库操作,ERB模板渲染视图,以及控制器处理用户请求与业务逻辑,使代码更易维护和扩展,提升团队开发效率。
67 0
|
12天前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
30 3
|
12天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
探索微服务架构中的API网关模式
29 2
|
20天前
|
存储 前端开发 测试技术
MVC、MVP、MVVM 模式
MVC、MVP 和 MVVM 是三种常见的软件架构模式,用于分离用户界面和业务逻辑。MVC(Model-View-Controller)通过模型、视图和控制器分离数据、界面和控制逻辑;MVP(Model-View-Presenter)将控制逻辑移到 Presenter 中,减少视图的负担;MVVM(Model-View-ViewModel)通过数据绑定机制进一步解耦视图和模型,提高代码的可维护性和测试性。