Angular 2 Data Flow 和 Flux 之间的关键区别是啥?

Posted

技术标签:

【中文标题】Angular 2 Data Flow 和 Flux 之间的关键区别是啥?【英文标题】:What's the crucial difference between Angular 2 Data Flow and Flux?Angular 2 Data Flow 和 Flux 之间的关键区别是什么? 【发布时间】:2017-08-03 14:41:33 【问题描述】:

您好,我现在正在研究 Angular 2 和 React + Redux,我对这两种选择的数据流差异的差异有疑问。

    Angular 2 默认使用单向数据流。 Redux 是一个 Flux 实现,它(也)使用单向数据流。它们之间的关键区别是什么? (可能是零件的组成?) 如果这两者在数据流动方式上没有太大区别,为什么有人会使用 Flux 或 Redux 而不是 Angular 2 框架的默认选择? 如果这两者完全不同,我可以为 Angular 2 的数据流调用一个名称,以便进一步参考以比较这两者吗?

提前非常感谢!

【问题讨论】:

【参考方案1】:

如果这两者在数据流动方式上没有太大不同,为什么 有人会使用 Flux 或 Redux 而不是 Angular 2 的默认选择吗 框架?

Angular 主要提供 UI 层(组件),而框架未预定义状态管理。由于 Angular 有服务,您可以将业务逻辑保留在服务(有状态服务)中,将 UI 状态保留在组件(有状态组件)中,但这意味着状态没有单一的位置,因为它分布在服务/组件之间。

在 Angular 应用程序中使用redux 的主要原因是为了将 UI 层与数据层分开。在 redux 中,状态被分离到一个单独的层(想想单个树状对象),它通过注入到组件构造函数中的特殊服务与 UI 层(组件)同步(检查this setup)。

如果这两个完全不同,有没有我可以呼唤的名字 Angular 2 的数据流以供进一步参考以比较这两者?

我还没有遇到过,可能是因为正如我上面提到的,作为一个框架,Angular 专注于呈现,而不是状态。

【讨论】:

感谢您的回答!一个额外的问题。据我所知,Flux(作为 FB 的通量实现)并不像 Redux 那样强制对所有状态使用一个存储。那么 Flux 是否与 Angular 服务中的业务逻辑大体相似? @sangyongjung,我对 Flux 没有太多经验,但我认为是的,在某些方面它们是相似的。【参考方案2】:

通过使用带有 Angular 2 的 Redux,您可以将应用程序状态集中在一个与您的组件完全分离的地方:商店。

然后您的组件可以是无状态的,允许您像这样禁用对它们的内部更改检测。

@Component(
  changeDetection: ChangeDetectionStrategy.OnPush
)
class myComponent 
  @Input() inputFromTheStore: Observable<State>;

确实,上面的示例是一个无状态组件,您可以在其上插入状态流。

也回答你的问题:

Angular 2 默认使用单向数据流。 Redux 是一个 Flux 实现,它(也)使用单向数据流。什么是 它们之间的关键区别是什么? (是不是可能,组成 零件?)

关键的区别在于,使用 Redux,状态将始终通过 @Input() 从上方进入。与传统的 angular2 statefull 组件不同,其中状态可以通过 @Input()@Output() 传输。

【讨论】:

非常感谢!

以上是关于Angular 2 Data Flow 和 Flux 之间的关键区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用data_flow_ops构造batch数据集

从零开始学深度学习编译器番外一,Data Flow和Control Flow

如何在 Spring Cloud Data Flow 任务中外部化应用程序属性

AspNetCore With Angular SPA Authentication using the Authorization Code Flow

[当人工智能遇上安全] 2.清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing

Redux:data flow