GraphQL se compose d'un système de type, d'un langage de requête et d'une sémantique d'exécution, d'une validation statique et d'une introspection de type, chacun décrit ci-dessous. Pour vous guider à travers chacun de ces composants, nous avons rédigé un exemple destiné à illustrer les différentes pièces de GraphQL.
- https://github.com/facebook/graphql
Falcor vous permet de représenter toutes vos sources de données distantes sous la forme d'un modèle de domaine unique via un graphique JSON virtuel. Vous codez de la même manière, quel que soit l'emplacement des données, que ce soit en mémoire sur le client ou sur le réseau sur le serveur.
- http://netflix.github.io/falcor/
Quelle est la différence entre Falcor et GraphQL (dans le contexte de Relay)?
Réponses:
J'ai regardé l' épisode 26 d'Angular Air: FalcorJS et Angular 2 où Jafar Husain explique comment GraphQL se compare à FalcorJS . Voici le résumé (paraphrasant):
genres[0..10]
. Mais il ne prend pas en charge les requêtes ouvertes, par exemplegenres[0..*]
.Jafar soutient que dans la plupart des applications, les types de requêtes qui vont du client au serveur partagent la même forme. Par conséquent, le fait d'avoir des opérations spécifiques et prévisibles comme obtenir et définir expose plus d'opportunités pour tirer parti du cache. De plus, de nombreux développeurs sont familiarisés avec le mappage des requêtes à l'aide d'un simple routeur en architecture REST.
La discussion de fin porte sur la question de savoir si la puissance fournie avec GraphQL l'emporte sur la complexité.
la source
J'ai maintenant écrit des applications avec les deux bibliothèques et je peux être d'accord avec tout dans l'article de Gajus, mais j'ai trouvé des choses différentes les plus importantes dans ma propre utilisation des frameworks.
la source
Lee Byron l' un des ingénieurs derrière GraphQL a fait une AMA sur hashnode , voici sa réponse à cette question:
Edit: Falcor peut en effet traiter des requêtes par lots , rendant le commentaire sur l'utilisation du réseau inexact. Merci à @PrzeoR
la source
MISE À JOUR: J'ai trouvé le commentaire très utile sous mon article que je souhaite partager avec vous en complément du contenu principal:
En ce qui concerne le manque d'exemples, vous pouvez trouver le repo awesome-falcorjs utilisateur, il existe différents exemples d'utilisation du CRUD d'un Falcor: https://github.com/przeor/awesome-falcorjs ... Deuxième chose, il y a un livre appelé " Maîtriser le développement Full Stack React "qui inclut également Falcor (bon moyen d'apprendre à l'utiliser):
POSTE ORGINAL CI-DESSOUS:
FalcorJS ( https://www.facebook.com/groups/falcorjs/ ) est beaucoup plus simple pour être efficace par rapport à Relay / GraphQL.
La courbe d'apprentissage pour GraphQL + Relay est ÉNORME:
Dans mon bref résumé: Optez pour Falcor. Utilisez Falcor dans votre prochain projet jusqu'à ce que VOUS ayez un gros budget et beaucoup de temps d'apprentissage pour votre équipe, puis utilisez RELAY + GRAPHQL.
GraphQL + Relay a une API énorme dans laquelle vous devez être efficace. Falcor a une petite API et est très facile à comprendre pour tout développeur front-end familiarisé avec JSON.
Si vous avez un projet AGILE avec des ressources limitées -> alors optez pour FalcorJS!
MON avis SUBJECTIF: FalcorJS est 500% plus facile à être efficace en javascript full-stack.
J'ai également publié des kits de démarrage FalcorJS sur mon projet (+ d'autres exemples de projets falcor full-stack): https://www.github.com/przeor
Pour être plus dans les détails techniques:
1) Lorsque vous utilisez Falcor, vous pouvez utiliser à la fois sur le front-end et le backend:
importer du falcor de «falcor»;
puis construisez votre modèle basé sur.
... vous avez également besoin de deux bibliothèques simples à utiliser sur le backend: a) falcor-express - vous l'utilisez une fois (ex. app.use ('/ model.json', FalcorServer.dataSourceRoute (() => new NamesRouter ())) ). Source: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/index.js
b) falcor-router - vous y définissez des routes SIMPLES (ex. route: '_view.length' ). Source: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/router.js
Falcor est un jeu d'enfant en termes de courbe d'apprentissage.
Vous pouvez également consulter la documentation qui est beaucoup plus simple que la bibliothèque de FB et consulter également l'article " pourquoi vous devriez vous soucier de falcorjs (netflix falcor) ".
2) Relay / GraphQL ressemble plus à un énorme outil d'entreprise.
Par exemple, vous avez deux documentations différentes qui parlent séparément:
a) Relay: https://facebook.github.io/relay/docs/tutorial.html - Conteneurs - Routes - Root Container - Ready State - Mutations - Network Layer - Babel Relay Plugin - GRAPHQL
RÉFÉRENCE API
Relais
INTERFACES
RelayNetworkLayer
b) GrapQL: https://facebook.github.io/graphql/
C'est ton choix:
Falcor JS VERSUS, simple et court documenté, outil de qualité professionnelle avec une documentation longue et avancée comme GraphQL & Relay
Comme je l'ai déjà dit, si vous êtes un développeur frontal qui comprend l'idée d'utiliser JSON, alors l'implémentation de graphes JSON de l'équipe Falcor est le meilleur moyen de réaliser votre projet de développement full-stack.
la source
En bref, Falcor ou GraphQL ou Restful résolvent le même problème - fournissent un outil pour interroger / manipuler efficacement les données.
Leur différence réside dans la manière dont ils présentent leurs données:
Chaque fois que nous avons besoin de fournir des données pour l'utilisateur, nous nous retrouvons avec quelque chose d'aimé: client -> requête -> {une couche de traduction de la requête en opérations de données} -> données.
Après avoir lutté avec GraphQL, Falcor et JSON API (et même ODdata), j'ai écrit ma propre couche de requête de données . C'est plus simple, plus facile à apprendre et plus équivalent avec GraphQL.
Découvrez-le sur:
https://github.com/giapnguyen74/nextql
Il s'intègre également à featherjs pour des requêtes / mutations en temps réel. https://github.com/giapnguyen74/nextql-feathers
la source
OK, partez d' une différence simple mais importante, GraphQL est une requête basée sur Falcor, mais pas!
Mais comment ils vous aident?
Fondamentalement, ils nous aident tous les deux à gérer et à interroger les données, mais GraphQL a un modèle req / res et renvoie les données au format JSON , essentiellement l'idée dans GraphQL est d'avoir une seule demande pour obtenir toutes vos données dans un seul objectif ... Aussi, avoir une réponse exacte en ayant une demande exacte, donc quelque chose à exécuter sur Internet bas débit et des appareils mobiles, comme les réseaux 3G ... Donc, si vous avez beaucoup d'utilisateurs mobiles ou pour certaines raisons, vous aimeriez avoir moins de demandes et une réponse plus rapide , utilisez GraphQL ... Bien que Faclor n'en soit pas trop loin, alors lisez la suite ...
D'autre part, Falcor by Netflix, a généralement une demande supplémentaire (généralement plus d'une fois) pour récupérer toutes vos données, même s'ils essaient de les améliorer en une seule demande ... Falcor est plus limité pour les requêtes et n'a pas de pré -des aides de requêtes définies comme range et etc ...
Mais pour plus de précisions, voyons comment chacun d'eux se présente:
la source