web-dev-qa-db-ja.com

ReduxとRelayの違い

redux and relayに基づいて多くの記事/ドキュメントを読みましたが、それでもこの2つのライブラリがどのように異なるのか混乱していますか?
この2つのライブラリの利点と欠点は何ですか?
リレーにおけるGraphQLの正確な役割は何ですか?
CRM/ERPなどのエンタープライズデータ駆動型アプリケーションに適したライブラリはどれですか。

35
user sks

どちらもFlux実装であり、アプリケーションの状態を管理するためのFacebookフレームワークです。

  • Redux:アプリケーションの状態管理の処理に役立つ一般的なJavaScriptライブラリ。 Reduxは反応に依存せず、任意のライブラリで使用できます。 react-reduxライブラリを使用して、reactとreduxを簡単に統合できます。 reduxでは、アプリケーションの状態は単一のストアにあり、各コンポーネントは状態にアクセスでき、アクションをディスパッチすることで状態を変更することもできます。 Reduxは、箱から出してデータを取得することはできませんが、手動で実行できます。サーバーからストアにデータを取得するアクションを作成するだけです。

  • Relay:反応のためにfacebookによって作成され、内部的にも使用されます。リレーは、両方が単一のストアを使用するという点でreduxに似ています。主な違いは、リレーはサーバーから発生した状態のみを管理し、状態へのすべてのアクセスは、GraphQLクエリ(データの読み取り用)と変更(データの変更用)を介して使用されることです。リレーはデータをキャッシュし、変更されたデータのみをフェッチすることでデータフェッチを最適化します。リレーは、楽観的な更新もサポートします。つまり、サーバーの結果が到着する前に状態を変更します。

GraphQLは、宣言的で構成可能なクエリを使用するWebサービスフレームワークおよびプロトコルであり、過剰取得や取得不足などの問題を解決します。RESTを置き換える有効な候補と考えられています。
GraphQLはリレーに依存しません。逆に、リレーはgraphqlに依存します。 Graphqlは、他のすべてのデータフェッチが行われるのと同じ方法でreduxで使用できます。

ご覧のように、reduxに対するリレーの主な利点は、データフェッチが既に処理されており、そのために最適化されていることです。
一方で、クライアントの特定の状態を管理することはできませんが、それはほとんど必要ありません。

また、IMOリレーは習得と実装が困難ですが、最終結果はより良く最適化されていますが、小規模なアプリケーションの場合はやり直します。

60
Gershon Papi