2016-12-23 5 views
7

現在の私の会社には、さまざまな内部アプリケーションが独立して開発され、サイトにiframeされている「ポータル」があります。同じドメイン(クロスドメインではない)でホストされているフレーム間には、多くのチャタリングがあります(通常、状態をチェックしたり、他のアプリケーションが見えるように状態を設定します)。このアプローチはうまくいきますが、最近では、このアプローチが汚いと思われ、さまざまなチームが多くのデータをwindow.top(世界的に)投げているので、私たちはreduxへの移行を検討しています。 reduxのようなものがwindow.topの変数を読み込んで設定するよりも一様である複数の "アプリケーション"を "通信する"ことができるか、これはreduxの不適切な使用ですか?単一のレデックスストアを介して通信する複数のリアクションアプリケーション

答えて

6

フレームのコンテキストが異なります。親ストアを参照する必要があります(例:dispatch)。windowで店舗を公開してください。それはおそらく無作為な種類の変数よりもクリーンです。

これは本当に独立したアプリだとしたら、バックエンド(Elixir、Nodeなど)から配信されたライブアップデートを介して通信している各フレームのWebソケットを介して、 - タスクのために実行されます。

このようにすると、アプリを分ける際の柔軟性が高まります(たとえば、自分のウィンドウでアプリFooを実行したい)、フレーム間通信を共通バスに取得して、それらのメッセージを調べたいものがあれば缶など

1

はい、実際にはトップレベルのページに共通のReduxストアを持っていて、アクションをディスパッチできます。しかし、異なるiFramesで更新を聞きたい場合は、状態の変化を観察し、iFramesがこれらのイベントに登録できるように、Reduxミドルウェアが必要になります。

これはあなたのコードを少し上手く構築するかもしれませんが、異なるチームがたくさんいる場合、すべての猿が単一のReduxストアにパッチを当てるとコードがかなり素早く汚くなります。

トップレベルのページにpostal.jsなどのさまざまなアプリ間でメッセージを渡して共有データ用の簡単な名前空間のオブジェクトストアを作成し、それをミスから守るためのpub/subライブラリをお勧めしますシームレス不変ライブラリで使用します。

1

このアプローチはうまく動作しますが、最近、我々は、このアプローチが汚いとさまざまなチームが、(グローバル)window.topに多くのデータの を投げているようだと 再来への移行を検討しています。

この点に着目すると、コードをクリーンアップするか、レフィックスを実装することを検討します。私は一般的に何かをグローバルに保存したり、ウィンドウに保存したりしません。チームのあなたの会社はあなたがReduxのを学びたいしばらく

  • ためにこのポータルを使用することになります

    • 場合、私は非常に実装Reduxのを推薦するでしょう

      (それは本当にクールだ)

    • 誰かがすでによく知っています還元剤あり

    なぜ還元ですか?

    • あなたが倍数ビューまたはフレーム間で状態を追跡している場合、それはそのすべての状態の真実の単一ソースの利用
    • スーパーモジュラーやチーム環境で作業する喜びに最適です

    あなたの説明によると、あなたの還元はあなたの問題の完璧な解決策であるようです。

    Reduxはかなり簡単ですが、テクノロジースタックの残りの部分に応じて、reduxでミドルウェアを使用する必要があります。

  • +0

    reduxを実装しても、別々のアプリケーション間で通信するという基本的な問題は解決されません。あなたが収納している窓に1店舗しか持っていないが、その店舗にはまだ "競争"があります。 –

    関連する問題