Angular 2数据流和Flux之间的关键区别是什么?

8

你好,我现在正在学习Angular 2和React + Redux,我有一个关于这两种选择之间数据流差异的问题。

  1. Angular 2默认使用单向数据流。Redux是一种Flux实现,也使用单向数据流。它们之间的关键区别是什么?(可能是部件的组合吗?)
  2. 如果从数据流的角度来看,它们两者并没有太大的不同,为什么还会有人使用Flux或Redux而不是默认的Angular 2框架?
  3. 如果这两者相当不同,那么我可以称Angular 2的数据流为什么名称,以便进一步比较这两者?

非常感谢!

2个回答

7
如果在数据流方面这两者并没有太大差别,为什么会有人选择Flux或Redux而不是Angular 2框架的默认选择呢?Angular主要提供UI层(组件),而状态管理不是由框架预定义的。由于Angular具有服务,您可以将业务逻辑保留在服务(有状态服务)中,将UI状态保留在组件(有状态组件)中,但这意味着状态没有单一的位置,而是分布在服务/组件之间。在Angular应用程序中使用Redux的主要原因是将UI层与数据层分离。在Redux中,状态被分离成一个单独的层(类似于单树对象),通过注入到组件构造函数中的特殊服务与UI层(组件)同步(请查看this setup)。如果这两个框架非常不同,那么我可以称之为Angular 2的数据流吗?我还没有遇到过这样的名称,可能是因为如上所述,作为一个框架,Angular专注于演示,而不是状态。

谢谢你的回答! 还有一个问题。 据我所知,Flux(作为FB的Flux实现)不像Redux那样强制使用一个存储器来存储所有状态。那么,Flux通常类似于在Angular服务中拥有业务逻辑吗? - sangyongjung
@sangyongjung,我对Flux没有太多经验,但我认为它们在某种程度上是相似的。 - Max Koretskyi

3
通过在Angular 2中使用Redux,您可以将应用程序状态集中放置在与组件完全分离的单个位置:存储区。因此,您的组件可以是无状态的,并且可以像这样禁用它们的内部更改检测。请注意保留HTML标记。
@Component({
  changeDetection: ChangeDetectionStrategy.OnPush
})
class myComponent {
  @Input() inputFromTheStore: Observable<State>;
}

实际上,上述的示例是一个无状态组件,您可以在其中插入一系列状态流。
此外,回答您的问题:
Angular 2默认使用单向数据流。Redux是Flux的一种实现,它也使用单向数据流。它们之间的关键区别是什么?(它可能是部分组成吗?)
关键区别在于,采用Redux时状态始终通过@Input()从上方传入。与传统的angular2有状态组件不同,状态可能会通过@Input()和@Output()进行转换。

非常感谢! - sangyongjung

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接