web-dev-qa-db-fra.com

Relay vs Redux vs Apollo avec GraphQL et React-Native

Je dois démarrer un nouveau projet (web + natif) (application de taille moyenne) à partir de zéro. En raison de la pléthore de frameworks JS et de leur mise en œuvre, en particulier au cours des deux dernières années, j'ai eu un deuxième doute sur ma pile habituelle.

J'ai utilisé react + redux sur le front-end avec Node et MongoDB sur le backend communiquant via REST API).

Pour ce nouveau projet, j'ai décidé d'aller avec React-Native + React Native for Web + Node + PostgreSQL. Cependant, je me demande quel framework je devrait utiliser pour la récupération des données et la gestion des états/magasins.

Jusqu'à présent, redux a bien fonctionné pour moi. Cependant, en raison de la nature de l'évolution de JS. Je suis un peu sceptique quant à l'utilisation de la même pile que j'utilisais dans le passé.

Quels sont les avantages et les inconvénients si je choisis la pile suivante

React-Native + React-Native-For-Web + Redux + GraphQL + Node + PostgreSQL


React-Native + React-Native-For-Web + Relay + GraphQL + Node + PostgreSQL


React-Native + React-Native-For-Web + Apollo + GraphQL + Node + PostgreSQL

J'ai lu de nombreux articles indiquant les avantages de l'utilisation de chaque framework, mais la quantité de contenu et d'articles est un peu effrayante. Je comprends qu'il n'y a pas de bonne ou de mauvaise réponse. Cependant, il serait agréable de savoir quelle pile susmentionnée va bien ensemble en gardant à l'esprit - moins de courbe d'apprentissage, une bonne documentation, une maintenabilité, moins de solutions de contournement.

25
zaq

Je pense que si vous venez d'un React + fond Redux, alors Apollo devrait être le chemin à parcourir pour vous!

Remarque: Si vous êtes un nouveau venu dans GraphQL, je vous recommande de consulter Comment GraphQL où vous trouverez des tutoriels à la fois sur Relay et Apollo.

Quelques informations:

  • Le relais est très puissant mais aussi extrêmement complexe et est livré avec une courbe d'apprentissage notable.
  • Apollo s'appuie sur Redux, bien que ce ne soit pas vraiment pertinent pour vous en tant que développeur, car le magasin vous est caché. Cependant, des concepts similaires à ceux de Redux sont utilisés, par exemple pour mettre à jour le magasin avec updateQueries .
  • Il est également assez simple de combiner le magasin Apollo avec votre propre magasin Redux si vous souhaitez gérer un état autre que les données mises en cache depuis le serveur
  • Avec Apollo, vous pouvez également utiliser abonnements en temps réel
  • Je recommanderais certainement de ne pas utiliser Apollo ou Relay et de n'utiliser que Redux, car les deux cadres prennent un travail notable sur vos épaules lorsqu'il s'agit d'envoyer des requêtes, des mutations, la mise en cache et des mises à jour de l'interface utilisateur. Cependant, vous voudrez peut-être jeter un œil à Lokka si vous recherchez un client GraphQL plus léger.

Jetez un oeil à ce article détaillé comparant Relay et Apollo pour plus d'informations de fond.

Si vous souhaitez en savoir plus sur Relay et Apollo, consultez le site Web du didacticiel How to GraphQL .

Par ailleurs, une autre option pour le backend si vous ne voulez pas le construire vous-même serait Graphcool (avertissement: je travaille pour eux :)).

31
nburk