MVVM,MVP,MVC,Flux,Redux,MobX等前端架构模式汇总

说到前端的三大主流框架大家都知道,react,vue,angular等,过去还有古老的jsp,juqery等等,前端跟随时代一直在发展,那么我们一起来总结一下MVVM,MVP,MVC,Flux,Redux,MobX等前端的常见架构模式,以及使用场景。

MVVM(Model-View-ViewModel):

  1. 模型(Model):表示数据和业务逻辑。
  2. 视图(View):表示用户界面,通常是由 HTML、CSS 和 DOM 元素组成。
  3. 视图模型(ViewModel):连接视图和模型的中间层,负责处理视图的逻辑和数据绑定。ViewModel 通常是一个纯粹的 JavaScript 对象,包含了视图需要展示的数据和方法。

MVVM 的核心思想是数据驱动视图,通过数据绑定机制实现视图和模型之间的自动同步。当模型发生变化时,视图会自动更新;当用户在视图中进行操作时,视图模型会自动更新模型。

在前端框架中,比较典型的 MVVM 框架是 Vue.js,Vue.js 提供了响应式数据绑定和指令等功能,使得开发者可以轻松地构建 MVVM 架构的应用。

MVP(Model-View-Presenter):

  1. 模型(Model):表示数据和业务逻辑。
  2. 视图(View):表示用户界面,通常是由 HTML、CSS 和 DOM 元素组成。
  3. 主持人(Presenter):连接视图和模型的中间层,负责处理视图的逻辑和模型的交互。Presenter 通常是一个 JavaScript 对象,包含了视图的事件处理逻辑和模型的操作方法。

MVP 的核心思想是解耦视图和模型,通过主持人来协调视图和模型之间的交互。视图不直接操作模型,而是通过主持人来间接操作,从而实现了视图和模型的解耦。

在 MVP 架构中,视图是 passively 表示用户界面,主持人负责更新视图的状态和处理用户操作,模型则负责数据的存储和业务逻辑的处理。MVP 架构适用于对 UI 控制和逻辑分层更为严格的应用场景。

区别总结:

  • MVVM 更加强调数据驱动视图,通过数据绑定实现视图和模型之间的自动同步,更适用于数据驱动型的应用场景。
  • MVP 更加强调解耦视图和模型,通过主持人来协调视图和模型之间的交互,更适用于 UI 控制和逻辑分层更为严格的应用场景。

综上所述,MVVM 和 MVP 是两种不同的前端架构模式,每种模式都有其独特的优点和适用场景。开发者可以根据项目需求和特点选择合适的架构模式。

除了 MVVM 和 MVP,还有一种常见的前端架构模式是 MVC(Model-View-Controller)。

MVC(Model-View-Controller):

  1. 模型(Model):表示数据和业务逻辑。
  2. 视图(View):表示用户界面,通常是由 HTML、CSS 和 DOM 元素组成。
  3. 控制器(Controller):连接视图和模型的中间层,负责处理用户的输入和业务逻辑。控制器接收用户的输入并根据业务逻辑更新模型和视图。

MVC 的核心思想是将应用程序分成三个部分:模型、视图和控制器,其中模型负责处理数据和业务逻辑,视图负责显示用户界面,控制器负责处理用户的输入和更新模型和视图。MVC 架构使得应用程序的各个部分之间相互解耦,便于管理和维护。

在前端开发中,MVC 架构常用于传统的后端渲染应用,例如使用服务器端模板引擎生成 HTML 页面的应用。控制器通常由后端服务端框架负责处理,而模型和视图则由前端负责处理。

除了MVVM、MVP和MVC之外,还有一些其他的前端架构模式,例如:

Flux:

Flux 是一种单向数据流的架构模式,由 Facebook 提出。它将应用程序分成四个部分:Action、Dispatcher、Store 和 View。其中,Action 表示用户的操作,Dispatcher 负责分发 Action,Store 存储应用程序的状态,View 表示用户界面。Flux 架构的核心思想是通过单向数据流来管理应用程序的状态,使得应用程序的状态变化可预测且易于调试。

Redux:

Redux 是基于 Flux 架构的状态管理库,由 Dan Abramov 和 Andrew Clark 开发。它采用单一的不可变数据源来管理整个应用的状态,通过纯函数来处理状态的变化。Redux 的核心概念包括 Action、Reducer 和 Store,其中 Action 表示用户的操作,Reducer 用于更新应用程序的状态,Store 用于存储应用程序的状态。Redux 提供了强大的开发工具和中间件,使得状态管理变得简单和可预测。

MobX:

MobX 是另一种状态管理库,它采用响应式编程的思想来管理应用程序的状态。MobX 可以将任何可观察的 JavaScript 对象转换成响应式对象,当响应式对象发生变化时,会自动更新依赖于它的组件。MobX 的核心概念包括 Observable、Action 和 Computed,其中 Observable 表示可观察的对象,Action 用于修改状态,Computed 用于计算状态的派生值。

微前端(Micro Frontends):

微前端是一种将前端应用程序分解成独立的、可独立部署和维护的小型应用的架构模式。每个微前端都拥有独立的技术栈和团队,通过统一的容器来组合和展示这些微前端应用。微前端架构使得前端应用程序更加灵活和可扩展,便于团队协作和应用程序的管理和维护。

以上是一些常见的前端架构模式,每种模式都有其独特的优点和适用场景,开发者可以根据项目需求和特点选择合适的架构模式。

除了上述提到的前端架构模式外,还有一些其他的架构模式,包括但不限于:

CQRS(Command Query Responsibility Segregation):

CQRS 是一种将应用程序的读操作(Query)和写操作(Command)分离的架构模式。它将应用程序的读模型(Query Model)和写模型(Command Model)分别设计为两个独立的模型,从而实现了读写分离。CQRS 架构模式适用于复杂的应用程序,能够更好地满足不同类型的查询和更新需求,提高应用程序的性能和可维护性。

Event Sourcing:

Event Sourcing 是一种将应用程序的状态和行为都表示为事件序列的架构模式。它将应用程序的状态表示为一系列不可变的事件,每个事件都包含了应用程序在某个时间点发生的状态变化。通过事件的序列化和持久化,可以实现应用程序的状态恢复和历史回溯。Event Sourcing 架构模式适用于需要记录和追溯应用程序状态变化的场景,例如金融交易系统和日志记录系统等。

最后也是全文最重要的,码字不易,你的鼓励是我持之以恒的动力,欢迎关注点赞搜藏,我会定时输送全栈技术干货!!!

相关推荐
y先森26 分钟前
CSS3中的伸缩盒模型(弹性盒子、弹性布局)之伸缩容器、伸缩项目、主轴方向、主轴换行方式、复合属性flex-flow
前端·css·css3
前端Hardy27 分钟前
纯HTML&CSS实现3D旋转地球
前端·javascript·css·3d·html
susu108301891130 分钟前
vue3中父div设置display flex,2个子div重叠
前端·javascript·vue.js
IT女孩儿2 小时前
CSS查缺补漏(补充上一条)
前端·css
吃杠碰小鸡3 小时前
commitlint校验git提交信息
前端
虾球xz3 小时前
游戏引擎学习第20天
前端·学习·游戏引擎
我爱李星璇3 小时前
HTML常用表格与标签
前端·html
疯狂的沙粒3 小时前
如何在Vue项目中应用TypeScript?应该注意那些点?
前端·vue.js·typescript
小镇程序员3 小时前
vue2 src_Todolist全局总线事件版本
前端·javascript·vue.js
野槐4 小时前
前端图像处理(一)
前端