2017-04-09 15 views
12

Je dois commencer un nouveau projet (web + natif) (application de taille moyenne) à partir de zéro. En raison de la pléthore de cadres JS et de la mise en œuvre là-bas en particulier au cours des deux dernières années, j'ai eu un deuxième doute sur ma pile habituelle.Relais vs Redux vs Apollo avec GraphQL et React-Native

J'ai utilisé rea + redux sur le frontal avec Node et MongoDB sur le backend communiquant via les API REST.

Pour ce nouveau projet, j'ai décidé d'utiliser React-Native + React Native pour Web + Node + PostgreSQL. Cependant, je me demande quel cadre je devrais utiliser pour la récupération de données et la gestion de l'état/magasin.

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 avec la même pile que j'ai utilisée dans le passé.

Quels sont les avantages et les inconvénients si je vais avec 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 faisant état des avantages de l'utilisation de chaque cadre, mais la quantité de contenu et les articles sont un peu effrayant. Je comprends qu'il n'y a pas de bonne ou de mauvaise réponse. Cependant, il serait bon de savoir quelle pile ci-dessus va bien ensemble en gardant à l'esprit - moins de courbe d'apprentissage, une bonne documentation, la maintenabilité, moins de solutions de contournement.

Répondre

22

Je pense que si vous venez d'un fond React + Redux, alors Apollo devrait être la voie à suivre pour vous!

Note: Si vous êtes un nouveau venu complet à GraphQL, je vous recommande de vérifier How to GraphQL où vous trouverez des tutoriels à la fois sur le relais et Apollo.

Quelques éléments d'information:

  • relais est très puissant mais aussi très complexe et est livré avec une courbe d'apprentissage notable.
  • Apollo s'appuie sur Redux, mais ce n'est pas vraiment important pour vous en tant que développeur, car le magasin vous est caché. Cependant, des concepts similaires à Redux sont utilisés par exemple. pour mettre à jour le magasin avec updateQueries.
  • Il est également assez straightfoward à combine the Apollo store with your own Redux store si vous voulez gérer l'état autre que les données mises en cache du serveur
  • Avec Apollo, vous pouvez également utiliser realtime subscriptions
  • Je recommande vivement contre ne pas utiliser Apollo ou de relais et d'aller avec seulement Redux puisque les deux frameworks prennent un travail considérable sur vos épaules quand il s'agit d'envoyer des requêtes, des mutations, la mise en cache et les mises à jour de l'interface utilisateur. Cependant, vous pouvez jeter un oeil à Lokka si vous cherchez un client GraphQL plus léger.

Jetez un oeil à ce in-depth article en comparant Relais et Apollo pour plus d'informations.

Si vous souhaitez en savoir plus sur Relay et Apollo, consultez le site Web tutoriel 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 :)).

+1

Merci pour la réponse détaillée. Pourriez-vous me dire quelle est la différence majeure entre (graphql-server et Graphcool) en termes d'accélération du cycle de développement. Comment graphql-server et GraphCool sont différents les uns des autres. – zaq

+1

sans trop en savoir plus sur 'graphql-server', je pense que la différence majeure est que Graphcool fournit une solution complète hébergée alors que' graphql-server' est un outil qui vous aide à construire votre propre serveur GraphQL. Donc, selon vos objectifs, l'un ou l'autre pourrait être mieux adapté :) Si vous voulez en savoir plus sur le fonctionnement de GraphQL sur le serveur, alors 'graphql-server' vous servira sûrement mieux! Si vous voulez simplement créer une application aussi vite que possible, Graphcool peut être plus utile car vous n'avez pas à faire de travail sur le serveur. – nburk

+0

Merci. Je dois passer en revue les documents Graphcool en profondeur. En ce moment je me demande quelles données stockez-vous sur vos serveurs. Par exemple, si mon application est hébergée sur Heroku. Comment mon application hébergée communique-t-elle avec Graphcool et quelles données sont réellement stockées sur vos serveurs. – zaq

0

apprentissage Apollo était très faisable avec ce cours, je l'ai fait sur Udemy, GraphQL with React and Apollo

Je n'ai aucune expérience avec relais, mais ai entendu il est plus difficile d'apprendre, donc si le temps est un facteur, Apollo pourrait être une bonne solution :) Bonne chance