Ari*_*deh 37 model-view-controller flux reactjs
查看下图(解释MVC),我看到了单向数据流.
那么为什么我们认为MVC具有双向数据流,同时证明Flux的合理性呢?
Aru*_*ula 30
Real和Pure MVC是单向的.从问题中粘贴的维基百科图中可以清楚地看出.
十多年前,当像Apache Struts这样的服务器端框架实现了一个名为Model View Presenter(MVP)模式的MVC变体时,他们使每个请求都通过控制器,每个响应都通过控制器返回.每个人都继续称它为MVC.由于Web的固有特性,如果没有发送请求或更新的视图,则无法将模型中的任何更改传播到视图.所以Pure MVC没有实现.而是实施MVP.
几年前,当像Angular,Ember,Knockout这样的框架在前端实现MVC时,他们实现了另一种名为Model View ViewModel(MVVM)模式的MVC变种,很少有人继续称之为MVC.(很少有人意识到术语并不重要,称之为MVW(W代表Whatever)),它们都没有实现纯粹的MVC.
当React诞生时,他们抓住机会实现纯MVC(不是MVP或MVVM),并将其重命名为Flux,几乎没有变化.我觉得Flux是MVC的另一个变种.虽然,Flux/React团队表示它不是MVC,但我看到两种体系结构之间存在很多奇偶性 - Flux和MVC.
chu*_*die 15
因为在Javascript框架中,MVC不会按照您描述的方式工作.UI通常与模型双向通信,如下所示:
在Flux体系结构中,UI只会向调度程序发出一个带有类型和相关数据的独立操作,然后调度程序将以与任何后台ajax方法更新模型相同的方式更新模型.
参考:http: //www.thesoftwaresimpleton.com/blog/2013/03/23/client-side-mvc/
"客户端MVC与Server Side MVC完全不同"
"我们正在建立两个物体之间的双向通信......"
"简而言之,我们将Person对象的firstName属性的值连接到输入的value属性."
http://guides.emberjs.com/v1.10.0/object-model/bindings/
Ember.js中的绑定可以与任何对象一起使用,而不仅仅是在视图和模型之间.
use*_*345 15
我是嵌入式开发人员,我在我的应用程序中使用MVC模式.我的应用程序非常小,我已经将我的架构设置为几乎单向的MVC.但是,我读了这篇文章,解释了客户端MVC,以及一些关于MVC和FLUX之间差异的想法.
参考:http: //www.christianalfoni.com/articles/2015_08_02_Why-we-are-doing-MVC-and-FLUX-wrong
传统的MVC
|------| request |------------| request |-------|
| | ---------> | | ---------> | |
| VIEW | response | | response | |
| | <--------- | | <--------- | |
|------| | | | |
| CONTROLLER | | MODEL |
|------| request | | request | |
| | ---------> | | ---------> | |
| VIEW | response | | response | |
| | <--------- | | <--------- | |
|------| |------------| |-------|
Run Code Online (Sandbox Code Playgroud)
FLUX
COMPONENTS ACTION CREATORS STORES
|----------------------<<<<-------------------|
| |
|------| |------------| |-------|
| | request | | request | |
| VIEW | ---------> | | ---------> | MODEL |----
| | | | | | |
|------| | | |-------| |
| CONTROLLER | |
|------| | | |-------| |
| | request | | request | | |
| VIEW | ---------> | | ---------> | MODEL | |
| | | | | | |
|------| |------------| |-------| |
| | | |
| |--------------------<<<<-------------------| |
|----------------------<<<<----------------------------|
Run Code Online (Sandbox Code Playgroud)
有些人采用术语 MVC 来指代 JavaScript 框架,其他人指出这些框架不是纯粹的 MVC,而是一种变体,可以称为MVP(Backbone)、MVVM(Angular 1)或更广泛的 MV*(另请参阅Arun 的回答))。
当Facebook 引入 Flux 时,他们将其与 MVVM/MVP/MV* 的问题进行了比较,但混淆地使用了术语 MVC。
对于观看此视频的纯 MVC 开发人员来说,Facebook 声明的 MVC 问题没有意义,Facebook 对 Flux 的描述比他们描述的 MVVM 系统更接近 MVC:
核心问题是他们“做”MVC 是错误的。然后他们修复了它,但决定重新命名并说他们发明了解耦数据、视图和事件处理的模式
看起来您的程序员创建了通量,因为他们不知道如何正确使用 MVC 和事件调度程序。
| 归档时间: |
|
| 查看次数: |
10250 次 |
| 最近记录: |