GraphQL besteht aus einem Typsystem, einer Abfragesprache und einer Ausführungssemantik, einer statischen Validierung und einer Typ-Introspektion, die jeweils unten beschrieben werden. Um Sie durch jede dieser Komponenten zu führen, haben wir ein Beispiel geschrieben, das die verschiedenen Teile von GraphQL veranschaulicht.
- https://github.com/facebook/graphql
Mit Falcor können Sie alle Ihre entfernten Datenquellen als ein einzelnes Domänenmodell über ein virtuelles JSON-Diagramm darstellen. Sie codieren auf dieselbe Weise, unabhängig davon, wo sich die Daten befinden, ob im Speicher auf dem Client oder über das Netzwerk auf dem Server.
- http://netflix.github.io/falcor/
Was ist der Unterschied zwischen Falcor und GraphQL (im Kontext von Relay)?
Antworten:
Ich habe mir die Angular Air Episode 26: FalcorJS und Angular 2 angesehen, in der Jafar Husain antwortet, wie GraphQL mit FalcorJS verglichen wird . Dies ist die Zusammenfassung (Paraphrasierung):
genres[0..10]
. Offene Abfragen, zgenres[0..*]
.Jafar argumentiert, dass in den meisten Anwendungen die Abfragetypen, die vom Client zum Server gehen, dieselbe Form haben. Daher bietet eine bestimmte und vorhersehbare Operation wie get und set mehr Möglichkeiten, den Cache zu nutzen. Darüber hinaus sind viele Entwickler mit der Zuordnung der Anforderungen mithilfe eines einfachen Routers in der REST-Architektur vertraut.
In der Enddiskussion geht es darum, ob die mit GraphQL verbundene Leistung die Komplexität überwiegt.
quelle
Ich habe jetzt Apps mit beiden Bibliotheken geschrieben und kann mit allem in Gajus 'Beitrag einverstanden sein, fand aber einige verschiedene Dinge, die für meine eigene Verwendung der Frameworks am wichtigsten sind.
quelle
Lee Byron, einer der Ingenieure hinter GraphQL, hat eine AMA auf dem Hashnode durchgeführt . Hier ist seine Antwort, wenn diese Frage gestellt wird:
Edit: Falcor kann in der Tat Batch - Anforderungen , so dass der Kommentar über die Netzwerknutzung ungenau. Vielen Dank an @PrzeoR
quelle
UPDATE: Ich habe den sehr nützlichen Kommentar unter meinem Beitrag gefunden, den ich als Ergänzung zum Hauptinhalt mit Ihnen teilen möchte:
In Bezug auf das Fehlen von Beispielen finden Sie das Repo von awesome-falcorjs benutzerfreundlich. Es gibt verschiedene Beispiele für die CRUD-Verwendung eines Falcor: https://github.com/przeor/awesome-falcorjs ... Zweitens gibt es ein Buch mit dem Titel " Mastering Full Stack React Development ", zu dem auch Falcor gehört (ein guter Weg, um zu lernen, wie man es benutzt):
ORGINAL POST UNTEN:
FalcorJS ( https://www.facebook.com/groups/falcorjs/ ) ist im Vergleich zu Relay / GraphQL viel einfacher effizient zu sein.
Die Lernkurve für GraphQL + Relay ist RIESIG:
In meiner kurzen Zusammenfassung: Gehen Sie für Falcor. Verwenden Sie Falcor in Ihrem nächsten Projekt, bis Sie ein großes Budget und viel Lernzeit für Ihr Team haben. Verwenden Sie dann RELAY + GRAPHQL.
GraphQL + Relay verfügt über eine große API, in der Sie effizient sein müssen. Falcor verfügt über eine kleine API und ist für jeden Front-End-Entwickler, der mit JSON vertraut ist, sehr einfach zu verstehen.
Wenn Sie ein AGILE-Projekt mit begrenzten Ressourcen haben -> dann entscheiden Sie sich für FalcorJS!
MEINE SUBJEKTIVE Meinung: FalcorJS ist 500% + einfacher, um in Full-Stack-Javascript effizient zu sein.
Ich habe auch einige FalcorJS-Starter-Kits für mein Projekt veröffentlicht (+ weitere Full-Stack-Falcor-Beispielprojekte): https://www.github.com/przeor
Um mehr über technische Details zu erfahren:
1) Wenn Sie Falcor verwenden, können Sie sowohl im Frontend als auch im Backend Folgendes verwenden:
Import von Falcor aus 'Falcor';
und bauen Sie dann Ihr Modell basierend auf.
... Sie benötigen außerdem zwei Bibliotheken, die im Backend einfach zu verwenden sind: a) falcor-express - Sie verwenden es einmal (z. B. app.use ('/ model.json', FalcorServer.dataSourceRoute (() => new NamesRouter) ())) ). Quelle: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/index.js
b) Falcor-Router - dort definieren Sie EINFACHE Routen (zB Route: '_view.length' ). Quelle: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/router.js
Falcor ist ein Kinderspiel in Bezug auf die Lernkurve.
Sie können auch eine Dokumentation sehen, die viel einfacher ist als die Bibliothek von FB, und den Artikel " Warum Sie sich für Falcorjs (Netflix Falcor) interessieren sollten " lesen .
2) Relay / GraphQL ähnelt eher einem riesigen Unternehmenstool.
Sie haben beispielsweise zwei verschiedene Dokumentationen, über die separat gesprochen wird:
a) Relay: https://facebook.github.io/relay/docs/tutorial.html - Container - Routen - Root-Container - Bereitschaftszustand - Mutationen - Netzwerkschicht - Babel-Relay-Plugin - GRAPHQL
API-REFERENZ
Relais
SCHNITTSTELLEN
RelayNetworkLayer
b) GrapQL: https://facebook.github.io/graphql/
Es ist deine Wahl:
Einfaches, süßes und kurz dokumentiertes Falcor JS VERSUS Riesiges Tool für Unternehmen mit langer und erweiterter Dokumentation als GraphQL & Relay
Wie ich bereits sagte, wenn Sie ein Front-End-Entwickler sind, der die Idee der Verwendung von JSON versteht, ist die Implementierung des JSON-Diagramms von Falcors Team der beste Weg, um Ihr Full-Stack-Entwicklungsprojekt durchzuführen.
quelle
Kurz gesagt, Falcor oder GraphQL oder Restful lösen dasselbe Problem - bieten ein Tool zum effektiven Abfragen / Bearbeiten von Daten.
Sie unterscheiden sich darin, wie sie ihre Daten präsentieren:
Wann immer wir Daten für den Benutzer bereitstellen müssen, erhalten wir etwas, das uns gefällt: client -> query -> {eine Ebene übersetzt Abfrage in Datenoperationen} -> Daten.
Nachdem ich mit GraphQL, Falcor und JSON API (und sogar ODdata) zu kämpfen hatte, schrieb ich meine eigene Datenabfrageschicht . Es ist einfacher, leichter zu erlernen und mit GraphQL gleichwertiger.
Überprüfen Sie es heraus an:
https://github.com/giapnguyen74/nextql
Es lässt sich auch in Federjs für Echtzeitabfragen / -mutationen integrieren. https://github.com/giapnguyen74/nextql-feathers
quelle
OK, fangen Sie einfach mit einem einfachen, aber wichtigen Unterschied an: GraphQL ist eine Abfrage, Falcor nicht!
Aber wie helfen sie dir?
Grundsätzlich helfen uns beide beim Verwalten und Abfragen von Daten, aber GraphQL verfügt über ein Anforderungs- / Res-Modell und gibt die Daten als JSON zurück , im Grunde die Idee in GraphQL darin, eine einzige Anforderung zu haben, alle Ihre Daten in einem Ziel zu erhalten. Haben Sie eine genaue Antwort, indem Sie eine genaue Anfrage haben. Also etwas, das auf langsamen Internet- und Mobilgeräten wie 3G-Netzwerken ausgeführt werden kann. Wenn Sie also viele mobile Benutzer haben oder aus bestimmten Gründen weniger Anfragen und eine schnellere Antwort wünschen , benutze GraphQL ... Während Faclor nicht zu weit davon entfernt ist, lies weiter ...
Andererseits, Falcor von Netflix normalerweise eine zusätzliche Anfrage (normalerweise mehr als einmal), um alle Ihre Daten abzurufen, obwohl sie versuchen, sie auf eine einzige Anforderung zu verbessern ... Falcor ist für Abfragen eingeschränkter und hat keine Vorabanforderung -definierte Abfrage-Helfer wie Range und etc ...
Aber zur weiteren Verdeutlichung wollen wir sehen, wie sich jeder von ihnen vorstellt:
quelle