2017-03-13 12 views
3

嗨我現在正在學習Angular 2和React + Redux,並且我對這兩種選擇在數據流方面的差異有所疑問。Angular 2數據流和Flux之間的關鍵區別是什麼?

  1. Angular 2默認使用單向數據流。 Redux是一個Flux實現,它也(也)使用單向數據流。那些之間的關鍵區別是什麼? (也許是,部分的組成部分?)
  2. 如果這兩者在數據流動方面沒有太大差別,爲什麼有人會使用Flux或Redux來默認選擇Angular 2框架?
  3. 如果這兩者完全不同,是否有一個名稱我可以叫Angular 2的數據流進一步參考比較這兩個?

非常感謝!

回答

3

如果這兩個是不是在如何數據流,爲什麼 會有人用焊劑或終極版在默認選擇角2 框架而言如此多的不同呢?

Angular主要提供UI層(組件),而狀態管理未由框架預定義。由於角度具有服務,因此您可以將業務邏輯保留在組件(有狀態組件)中的服務(有狀態服務)和UI狀態中,但這意味着狀態沒有單一位置,因爲它在服務/組件中分佈。

在角度應用程序中使用redux的主要原因是將UI層與數據層分開。在redux中,通過注入組件構造函數的特殊服務(檢查this setup),將狀態分爲單獨的層(認爲是單個樹狀對象),該層與UI層(組件)同步。

如果這兩個是完全不同的,有一個名字,我可以撥打電話進行 角2個的數據流進行進一步的參考比較這兩個?

我還沒有遇到過一個,可能是因爲如上所述,角度作爲一個框架是專注於演示文稿,而不是狀態。

+0

感謝您的回答! 還有一個問題。 據我所知,Flux(作爲FB的通量實現)並不強制爲Redux所用的所有狀態使用一個存儲。 Flux通常類似於Angular的服務中的業務邏輯嗎? – sangyongjung

+0

@sangyongjung,我對Flux沒有太多經驗,但我會認爲是的,在某種程度上他們是相似的。 –

2

通過以角度2使用Redux,您可以將您的應用程序狀態集中在與您的組件完全分離的單個位置:商店。

您的組件可以是無狀態的,允許您像這樣禁用內部變更檢測。

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

事實上,上面的例子是一個無狀態的組件,你可以插入一個狀態流。

而且回答你的問題:

角2默認使用單向數據流。 Redux是一個Flux 實現,它(也)使用單向數據流。 這些之間的關鍵區別是什麼? (也許, 部件的組成?)

關鍵的區別在於,使用Redux時,狀態將始終通過@Input()從上方進入。不像傳統的angular2狀態滿足組件,狀態可以通過@Input()@Output()

+0

非常感謝你! – sangyongjung

相關問題