Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Flux架构如何优于MVC_Javascript_Redux_Ngrx - Fatal编程技术网

Javascript Flux架构如何优于MVC

Javascript Flux架构如何优于MVC,javascript,redux,ngrx,Javascript,Redux,Ngrx,我试图理解flux架构解决的真正问题是什么 第一个也是主要的问题 将存储为状态管理。redux(通量架构实现)操作->存储(还原器)->视图中的示例。这是一种管理状态的简单方法 但是在很多博客文章中,他们谈论MVC/双向数据绑定。 我认为这是错误的,因为我不明白flux架构是如何关心双向数据绑定的。 例如: angularJs登录应用程序: <div ng-controller="loginCtrl"> username<input ng-model="username

我试图理解flux架构解决的真正问题是什么

第一个也是主要的问题

  • 存储为状态管理。redux(通量架构实现)操作->存储(还原器)->视图中的示例。这是一种管理状态的简单方法
但是在很多博客文章中,他们谈论MVC/双向数据绑定。 我认为这是错误的,因为我不明白flux架构是如何关心双向数据绑定的。 例如:

angularJs登录应用程序:

<div ng-controller="loginCtrl">
  username<input ng-model="username">
  password<input ng-model="password">
  <button ng-click="submit()">Send</button>
</div>
当然,我在实际应用程序中并没有这样做,但在这个示例中,我可以使用双向数据绑定和存储。 在本例中,解释是一个更改可以循环并在整个代码库中产生级联效应(使调试和理解变得非常复杂)

在这种情况下,他们说的通量是通量的良好实现

所以我试着在上阅读关于flux架构的文章,他们分享了一段youtube视频,并解释说MVC变得很复杂,可以进行infinte循环

我的问题是:

  • flux架构解决了哪些问题
  • MVC和/或双向绑定问题的真实例子是什么

  • Facebook创建了流量模式,以巩固许多组件之间的状态管理。使用React,每个组件都能够保持自己的状态。因此,我们需要注意如何为组件布局架构。通常来说,我们试图将开发视为一个大型组件,其中包含许多较小的组件。。。大部分状态管理由最外层组件维护。这在很多情况下都很有效,但不是所有情况下都有效

    所以通量被发明来补充React的单向数据流,以帮助在React组件之间创建一个更容易推理的状态系统。Redux是Flux的一个类似的实现,但相反,它使推理变得更加容易,因为Redux只有一个由所有组件共享的状态存储


    综上所述,我们必须考虑一个孤立的部件能够有效地与另一个部件进行通信。React有一个单向的父子组件流,但是当我们必须在该组件之外进行通信时会发生什么呢?在组件之外有一个状态存储非常有意义。相反,在组件之间设置手动事件和事件侦听器会很快变得混乱。

    我认为您必须更多地考虑MVC与CBA(基于组件的体系结构)的关系,而不是Redux与MVC的关系

    Redux可以帮助您同步组件之间的状态,并且当您得到共享状态的复杂组件树时,它会非常出色

    我想向您介绍这篇精彩的演讲,它可以帮助您了解在基于组件的体系结构中使用Redux的好处

    在Angular 2管理州-圣路易斯Angular午餐-Kyle Cordes

    Facebook认为MVC很快变得复杂**,很难培养新的开发者

    “Flux和MVC之间最大的区别在于避免了级联更新”——

    所以他们转向了Flux,这在风格上更像是FP而不是OOP

    但是Flux实际上只是在客户端正确实现的MVC(考虑到用户操作也必须通过控制器,而不仅仅是服务器交互)

    商店=模型

    调度员=控制器

    视图=视图

    视图只与调度器/控制器进行对话,而不是直接与存储/模型进行对话(这与他们在有缺陷的MVC实现中所做的相反;MVC实现基于可观察性,)

    与普通MVC的主要区别在于调度员确保:

    “在您的存储层完全完成之前,视图或任何其他内容都无法通过系统执行操作。”——


    **-我只能猜测这是因为“上帝对象”或“胖模型”,以及由于(糟糕的)OOP而增加的耦合。

    谢谢您的回答!,我理解facebook的问题是为了理解flux,但我没有发现mvc的问题,他们只是使用单一模型(store),所有数据和所有组件都订阅单一模型(store)。双向数据绑定或mvc的问题在哪里?如果你的应用程序增长开始是无限循环的,我找不到这个场景的例子。非常感谢,我补充说angular 2从redux(通量架构)中只获得一个好处。。。国家在一个地方。i fillredux不是vs mvc,它是带有一个模型(状态)的mvc,对于angular 2组件,它是控制器+视图
    angular.module('app',[]).controller('loginCtrl', function($scioe) {
      $scope.submit = function() {
        globalStore.dispatch({
          action: 'LOGIN', 
          payload: {
            username: $scope.username,
            password: $scope.password
          }
        })
      }
    })