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
- GraphQL-Relay-Spezifikation
- Objektidentifikation
- Verbindung
- Mutationen
- Weiterführende Literatur
API-REFERENZ
Relais
- RelayContainer
- Relay.Route
- Relay.RootContainer
- Relay.QL
- Relay.Mutation
- Relay.PropTypes
- Relay.Store
SCHNITTSTELLEN
RelayNetworkLayer
- RelayMutationRequest
- RelayQueryRequest
b) GrapQL: https://facebook.github.io/graphql/
- 2Sprache
- 2.1Quelltext
- 2.1.1Unicode
- 2.1.2Weißraum
- 2.1.3Leitungsterminatoren
- 2.1.4Kommentare
- 2.1.5 Unwichtige Kommas
- 2.1.6 Sexuelle Token
- 2.1.7 Ignorierte Token
- 2.1.8Punktzeichen
- 2.1.9Namen
- 2.2 Abfragedokument
- 2.2.1Operationen
- 2.2.2Auswahlsätze
- 2.2.3Felder
- 2.2.4Argumente
- 2.2.5Feldalias
- 2.2.6Fragmente
- 2.2.6.1Typbedingungen
- 2.2.6.2 Inline-Fragmente
- 2.2.7Eingabewerte
- 2.2.7.1Int Wert
- 2.2.7.2Float-Wert
- 2.2.7.3Boolescher Wert
- 2.2.7.4String-Wert
- 2.2.7.5Enum Value
- 2.2.7.6Listenwert
- 2.2.7.7Eingabeobjektwerte
- 2.2.8Variablen
- 2.2.8.1Variable Verwendung innerhalb von Fragmenten
- 2.2.9Eingabetypen
- 2.2.10Directives
- 2.2.10.1Fragment-Richtlinien
- 3Type System
- 3.1Typen
- 3.1.1Skalare
- 3.1.1.1 Eingebaute Skalare
- 3.1.1.1.1Int
- 3.1.1.1.2Float
- 3.1.1.1.3String
- 3.1.1.1.4Boolean
- 3.1.1.1.5ID
- 3.1.2Objekte
- 3.1.2.1Objektfeldargumente
- 3.1.2.2Objektfeldverfall
- 3.1.2.3Objekttypüberprüfung
- 3.1.3 Schnittstellen
- 3.1.3.1 Validierung des Schnittstellentyps
- 3.1.4Unionen
- 3.1.4.1 Überprüfung des Unionstyps
- 3.1.5Enums
- 3.1.6Eingabeobjekte
- 3.1.7Listen
- 3.1.8Non-Null
- 3.2Directives
- 3.2.1@skip
- 3.2.2@include
- 3.3Typen starten
- 4Introspektion
- 4.1Allgemeine Grundsätze
- 4.1.1 Namenskonventionen
- 4.1.2Dokumentation
- 4.1.3 Verachtung
- 4.1.4Typ Name Introspection
- 4.2Schema-Selbstbeobachtung
- 4.2.1Der Typ "__Type"
- 4.2.2Typen
- 4.2.2.1Skalar
- 4.2.2.2Objekt
- 4.2.2.3Union
- 4.2.2.4Interface
- 4.2.2.5Enum
- 4.2.2.6Eingabeobjekt
- 4.2.2.7Liste
- 4.2.2.8Non-null
- 4.2.2.9Kombination kombinieren und nicht Null
- 4.2.3Der Feldtyp
- 4.2.4Der __InputValue-Typ
- 5Validierung
- 5.1Operationen
- 5.1.1 Definierte Betriebsdefinitionen
- 5.1.1.1 Eindeutigkeit des Betriebsnamens
- 5.1.2Anonyme Betriebsdefinitionen
- 5.1.2.1 Einzelne anonyme Operation
- 5.2Felder
- 5.2.1Feldauswahl für Objekte, Schnittstellen und Gewerkschaftstypen
- 5.2.2 Zusammenführen der Feldauswahl
- 5.2.3 Blattfeldauswahl
- 5.3Argumente
- 5.3.1Argumentnamen
- 5.3.2 Eindeutigkeit des Arguments
- 5.3.3Argument Values Type Correctness
- 5.3.3.1Kompatible Werte
- 5.3.3.2 Erforderliche Argumente
- 5.4Fragmente
- 5.4.1Fragmenterklärungen
- 5.4.1.1 Eindeutigkeit des Fragmentnamens
- 5.4.1.2Fragment Spread Type Existence
- 5.4.1.3Fragmente auf zusammengesetzten Typen
- 5.4.1.4Fragmente müssen verwendet werden
- 5.4.2Fragment Spreads
- 5.4.2.1Fragment Spread Ziel definiert
- 5.4.2.2Fragment-Spreads dürfen keine Zyklen bilden
- 5.4.2.3Fragment Spread ist möglich
- 5.4.2.3.1Objektspreads im Objektbereich
- 5.4.2.3.2Abstrakt-Spreads im Objektbereich
- 5.4.2.3.3Objektspreads im abstrakten Bereich
- 5.4.2.3.4Abstrakt-Spreads im abstrakten Bereich
- 5.5Werte
- 5.5.1 Eindeutigkeit des Eingabeobjektfelds
- 5.6Directives
- 5.6.1Directives sind definiert
- 5.7Variablen
- 5.7.1Variable Einzigartigkeit
- 5.7.2Variable Standardwerte werden korrekt eingegeben
- 5.7.3Variablen sind Eingabetypen
- 5.7.4Alle Variablenverwendungen definiert
- 5.7.5Alle verwendeten Variablen
- 5.7.6Alle Variablenverwendungen sind zulässig
- 6Ausführung
- 6.1Auswertung von Anfragen
- 6.2 Variablen erzwingen
- 6.3 Auswerten von Operationen
- 6.4Auswertung von Auswahlsätzen
- 6.5Auswertung eines gruppierten Feldsatzes
- 6.5.1Feldeinträge
- 6.5.2 Normale Bewertung
- 6.5.3 Serielle Ausführung
- 6.5.4Fehlerbehandlung
- 6.5.5 Nichtigkeit
- 7Antwort
- 7.1Serialisierungsformat
- 7.1.1JSON-Serialisierung
- 7.2 Antwortformat
- 7.2.1Daten
- 7.2.2 Spiegel
- Anhang: Notationskonventionen
- A.1Kontextfreie Grammatik
- A.2Lexikalische und syntaktische Grammatik
- A.3Grammar-Notation
- A.4Grammar Semantik
- A.5Algorithmen
- Anhang: Grammatikübersicht
- B.1 Ignorierte Token
- B.2Lexikalische Token
- B.3 Abfragedokument
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.