2017-10-11 128 views
1

我們正在開發一個應用程序,其中我們需要一些共享數據,例如在不同的組件模塊中。Angular2.0中的狀態管理+

我們不能將它存儲在本地或全局存儲中,因爲它是敏感信息,所以我們不希望用戶可以打開開發人員工具並從那裏查看數據。

我已經探索過我們,瞭解我的是我們可以使用Redux或RXJS。

我想實現它通過Redux的任何人可以幫助我有什麼需要做的,如果我想存儲簡單的用戶名,國家,其對商店的緯度和我怎樣才能使用它們

回答

3

是你的研究已經登陸你在完美的位置。但我想說你也可以用其他方式。

關於NGRX

首先什麼是終極版?

終極版是JavaScript應用程序的應用狀態管理器,並 通過在應用程序中的 單向數據流保持與通量架構的核心原則。 Redux應用程序只有一個全局的只讀應用程序狀態。通過在控制方式下更新它的操作集合或操作流程「減少」來計算該狀態 。

Redux In Angular?

Redux的狀態經理一直很受歡迎和有啓發 創造@ngrx的,一組實現的 以同樣的方式管理國家,以及一些中間件和工具在 終極版模塊生態系統。 @ngrx創建時專門用於 Angular和RxJS,因爲它非常依賴可觀察的範例。無論 你在上面看到的部件均採用NGRX店(更新至 V4)現在升級的優勢,我們有懶加載支持管理 直接使用NGRX特色模塊

凡使用它?

一個小場景將使它的使用相當明確

我希望你可能已經使用Facebook的右:P所以如果你看@ Facebook的網站,你將看到導航欄的多個組件,左 面板,聊天室等。有沒有想過當一個新的消息傳遞到 你所有這些都同時更新如何?如果他們去 srevices或事件發射器,他們將被吞噬在 海面意大利麪代碼。即使實施將很難調試 或進行更改。

這裏是使用ngrx狀態管理的所有信息是 存儲在一個地方,當數據的狀態改變時,所有組件都被識別。看看堆棧溢出的這個答案 將清除更多的概念圖像清晰。

共享服務

共享服務是什麼,但更小的實現NGRX的和基於對觀測。我會建議,如果你的應用程序的規模是巨大的,然後去ngrx其他共享服務。

查看鏈接瞭解更多關於同樣的信息以及如何使用它們。

+0

我試圖使用共享服務,但共享服務的問題是如果我們必須刷新頁面或重新加載它所有的數據丟失,我們必須再次擊中數據庫。 – user3886602

+0

我們可以有一個實時應用程序類型的實現或鏈接,無論我只有這個增量和減量:) – user3886602

+0

@ user3886602同樣將與國家管理,你需要有某種形式的警衛,如果這樣的事情發生的服務 –

1

Redux在「Redux項目」意義上不適用於Angular。但是,Redux可以以多種方式用作模式 - 這是Redux最重要的部分。

NGRX

一條路可走會NGRX。該項目受到Redux模式的啓發,但實際上將RxJs用於狀態管理,所以它可能實際上就是您要查找的內容 - 如果您正在尋找一種現成的解決方案。除了狀態管理,NgRx還提供開發工具和與路由器的集成。我可以在這裏總結一下設置,但在@ngrx/store本身的自述文件中有一個非常清晰的演練:https://github.com/ngrx/platform/blob/master/docs/store/README.md

集服務

如果不希望增加的依賴,則可以簡單地具有單獨服務。角度體系結構是以層次化方式理解依賴注入的。

只要服務由同一個注入器提供,服務將是單例服務器;但是,您可以指示注入系統在邏輯組件樹中向上看,但是根據您的問題,這可能對於您要查找的內容太複雜。

也許提供應用程序範圍服務來存儲用戶數據的最簡單方法是將服務聲明爲根注入器或應用程序注入器的提供者。一個常見的模式是這裏看到的forRoot模式:https://angular.io/guide/ngmodule#configure-core-services-with-coremoduleforroot

希望這會有所幫助!