Model view controller MVC与Flux?双向还是单向?

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

看下图(它解释了MVC),我看到了单向数据流

为什么我们认为MVC具有双向数据流,同时又证明了流量?


因为在Javascript框架中,MVC的工作方式与您描述的不同。UI通常与模型双向通信,如:

  • 将用户类型输入到视图输入中
  • MVC框架绑定onchange()以更新模型
  • Ajax请求带来了新的模型数据
  • MVC框架更新视图输入的值以匹配模型
  • 在Flux体系结构中,UI只会向调度器触发一个具有类型和相关数据的独立操作,然后调度器将更新模型,就像任何后台ajax方法更新模型一样

    参考:

    “客户端MVC与服务器端MVC完全不同”

    “我们正在两个对象之间建立双向通信…”

    “简言之,我们将firstName属性的值连接在一起 将Person对象的属性设置为输入的value属性。“

    Ember.js中的绑定可以用于任何对象,而不仅仅是在 视图和模型


    我是一名嵌入式开发人员,在我的应用程序中使用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 |   |
    |      |            |            |            |       |   |
    |------|            |------------|            |-------|   |
       | |                                           |        |
       | |--------------------<<<<-------------------|        |
       |----------------------<<<<----------------------------|