Model view controller MVC与Flux?双向还是单向?
看下图(它解释了MVC),我看到了单向数据流 为什么我们认为MVC具有双向数据流,同时又证明了流量?Model view controller MVC与Flux?双向还是单向?,model-view-controller,reactjs,flux,Model View Controller,Reactjs,Flux,看下图(它解释了MVC),我看到了单向数据流 为什么我们认为MVC具有双向数据流,同时又证明了流量? 因为在Javascript框架中,MVC的工作方式与您描述的不同。UI通常与模型双向通信,如: 将用户类型输入到视图输入中 MVC框架绑定onchange()以更新模型 Ajax请求带来了新的模型数据 MVC框架更新视图输入的值以匹配模型 在Flux体系结构中,UI只会向调度器触发一个具有类型和相关数据的独立操作,然后调度器将更新模型,就像任何后台ajax方法更新模型一样 参考: “客户端MV
因为在Javascript框架中,MVC的工作方式与您描述的不同。UI通常与模型双向通信,如:
我是一名嵌入式开发人员,在我的应用程序中使用MVC模式。我的应用程序非常小,我将我的体系结构设置为几乎单向的MVC。但是,我读了这篇文章,解释了客户端MVC,以及关于MVC和FLUX之间差异的一些想法 参考: 传统MVC
|------| request |------------| request |-------|
| | ---------> | | ---------> | |
| VIEW | response | | response | |
| | <--------- | | <--------- | |
|------| | | | |
| CONTROLLER | | MODEL |
|------| request | | request | |
| | ---------> | | ---------> | |
| VIEW | response | | response | |
| | <--------- | | <--------- | |
|------| |------------| |-------|
请求请求|-------|
| | ---------> | | ---------> | |
|查看|响应| |响应||
| | | |
|查看|响应| |响应||
||真正和纯粹的MVC是单向的。从问题中粘贴的维基百科图表可以清楚地看出
十多年前,当像ApacheStruts这样的服务器端框架实现了一种称为模型-视图-呈现器(MVP)模式的MVC变体时,它们让每个请求都通过控制器,每个响应都通过控制器返回。大家继续称它为MVC。由于web的固有特性,在视图不发送请求或更新的情况下,模型中的任何更改都无法传播到视图。因此,没有实现纯MVC。而是实现了MVP
几年前,当Angular、Ember、Knockout等框架在前端实现MVC时,他们实现了MVC的另一个变体,称为模型-视图-模型(MVVM)模式,很少有人继续称之为MVC。(很少有人意识到术语并不重要,称之为MVW(W代表任何东西)),但没有人实现纯MVC
当React诞生时,他们抓住机会实现了纯MVC(不是MVP或MVVM),并将其重命名为Flux,几乎没有任何更改。我觉得Flux是MVC的又一个变体。虽然Flux/React团队说它不是MVC,但我看到两种体系结构——Flux和MVC之间有很多相同之处 有些人采用术语MVC来指代JavaScript框架,但它是一种变体,可以称为(主干)、MVVM()或更广泛的MV*(另请参见)
当时,他们使用了术语MVC,但令人困惑
对于观看此视频的纯MVC开发人员来说,Facebook所述的MVC问题毫无意义,Facebook对Flux的描述比他们描述的MVVM系统更接近MVC:
核心问题是他们“做”MVC是错误的。然后他们修复了它,但决定重新命名它,并说他们发明了数据、视图和事件处理解耦模式
看起来您的程序员创建flux是因为他们不知道如何正确使用MVC和事件调度器
人们喜欢时不时地对事物进行重命名,并认为他们刚刚想出了一个全新的想法。例如,如果将Dispatcher替换为Controller,将Store替换为Model,你得到了什么?只是想了解一些细节,Martin Fowlery的文章中对这种体系结构进行了很好的描述,你可以使用以下等式来表示双向和单向:1)控制器->视图2)控制器->模型3)视图模型你称之为“传统MVC”的是应用程序模型或MVP,“流量”是经典MVC,是吗用键盘输入这个型号很难吗?还是你用了发电机或工具?
COMPONENTS ACTION CREATORS STORES
|----------------------<<<<-------------------|
| |
|------| |------------| |-------|
| | request | | request | |
| VIEW | ---------> | | ---------> | MODEL |----
| | | | | | |
|------| | | |-------| |
| CONTROLLER | |
|------| | | |-------| |
| | request | | request | | |
| VIEW | ---------> | | ---------> | MODEL | |
| | | | | | |
|------| |------------| |-------| |
| | | |
| |--------------------<<<<-------------------| |
|----------------------<<<<----------------------------|