AGGIORNAMENTO: Ho trovato il commento molto utile sotto il mio post che voglio condividere con te come una cosa complementare al contenuto principale:
Per quanto riguarda la mancanza di esempi, puoi trovare utile il repository awesome-falcorjs, ci sono diversi esempi di utilizzo CRUD di Falcor:
https://github.com/przeor/awesome-falcorjs ... In secondo luogo, c'è un libro chiamato " Mastering Full Stack React Development "che include anche Falcor (buon modo per imparare ad usarlo):
POSTO ORGINALE SOTTO:
FalcorJS ( https://www.facebook.com/groups/falcorjs/ ) è molto più semplice per essere efficiente rispetto a Relay / GraphQL.
La curva di apprendimento per GraphQL + Relay è ENORME:
Nel mio breve riassunto: scegli Falcor. Usa Falcor nel tuo prossimo progetto fino a quando non avrai un budget elevato e un sacco di tempo di apprendimento per il tuo team, quindi utilizza RELAY + GRAPHQL.
GraphQL + Relay ha un'enorme API in cui devi essere efficiente. Falcor ha una piccola API ed è molto facile da comprendere per qualsiasi sviluppatore front-end che abbia familiarità con JSON.
Se hai un progetto AGILE con risorse limitate -> scegli FalcorJS!
IL MIO SOGGETTO: FalcorJS è più semplice del 500% per essere efficiente in javascript full-stack.
Ho anche pubblicato alcuni starter kit FalcorJS sul mio progetto (+ altri progetti di esempio di falcor full-stack): https://www.github.com/przeor
Per essere più nei dettagli tecnici:
1) Quando si utilizza Falcor, è possibile utilizzare sia sul front-end che sul back-end:
importare falcor da 'falcor';
e quindi costruire il tuo modello basato su.
... hai bisogno anche di due librerie che sono semplici da usare sul backend: a) falcor-express - lo usi una volta (es. app.use ('/ model.json', FalcorServer.dataSourceRoute (() => new NamesRouter ())) ). Fonte: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/index.js
b) falcor-router - qui si definiscono route SEMPLICI (es. route: '_view.length' ). Fonte:
https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/router.js
Falcor è un gioco da ragazzi in termini di curva di apprendimento.
Puoi anche vedere la documentazione che è molto più semplice della lib di FB e consultare anche l'articolo " perché dovresti preoccuparti di falcorjs (netflix falcor) ".
2) Relay / GraphQL è più probabile come un enorme strumento aziendale.
Ad esempio, hai due diverse documentazioni di cui si parla separatamente:
a) Relay: https://facebook.github.io/relay/docs/tutorial.html
- Contenitori - Percorsi - Contenitore radice - Stato pronto - Mutazioni - Livello di rete - Plugin relè Babel - GRAPHQL
- Specifiche dei relè GraphQL
- Identificazione dell'oggetto
- Connessione
- mutazioni
- Ulteriori letture
RIFERIMENTO API
staffetta
- RelayContainer
- Relay.Route
- Relay.RootContainer
- Relay.QL
- Relay.Mutation
- Relay.PropTypes
- Relay.Store
INTERFACCE
RelayNetworkLayer
- RelayMutationRequest
- RelayQueryRequest
b) GrapQL: https://facebook.github.io/graphql/
- 2Language
- 2.1 Testo sorgente
- 2.1.1Unicode
- 2.1.2 Spazio bianco
- 2.1.3 Terminatori di linea
- 2.1.4Comments
- 2.1.5 Virgole non significative
- 2.1.6 Token lessicali
- 2.1.7 Token ignorati
- 2.1.8Punctuators
- 2.1.9Names
- 2.2 Documento di richiesta
- 2.2.1Operations
- 2.2.2 Set di selezione
- 2.2.3Fields
- 2.2.4Arguments
- 2.2.5 Alias campo
- 2.2.6Fragments
- 2.2.6.1 Condizioni del tipo
- 2.2.6.2Inline Fragments
- 2.2.7 Valori di input
- 2.2.7.1Int Value
- 2.2.7.2 Valore di galleggiamento
- 2.2.7.3Boolean Value
- 2.2.7.4 Valore stringa
- 2.2.7.5 Valore di entrata
- 2.2.7.6 Valore elenco
- 2.2.7.7Input Valori oggetto
- 2.2.8Variables
- 2.2.8.1 Uso variabile all'interno dei frammenti
- 2.2.9 Tipi di input
- 2.2.10Directives
- 2.2.10.1 Direttive sui frammenti
- Sistema 3Type
- 3.1Types
- 3.1.1Scalars
- 3.1.1.1 Scalari integrati
- 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.2Objects
- 3.1.2.1 Argomenti del campo oggetto
- 3.1.2.2 Svalutazione campo oggetto
- 3.1.2.3 Convalida del tipo di oggetto
- 3.1.3Interfaces
- 3.1.3.1 Convalida del tipo di interfaccia
- 3.1.4Unions
- 3.1.4.1 Convalida del tipo di unione
- 3.1.5Enums
- 3.1.6 Oggetti di input
- 3.1.7Lists
- 3.1.8Non-Null
- 3.2Directives
- 3.2.1@skip
- 3.2.2@include
- 3.3 Tipi di avvio
- 4Introspection
- 4.1 Principi generali
- 4.1.1 Convenzioni di denominazione
- 4.1.2Documentation
- 4.1.3Deprecation
- 4.1.4 Digitare Nome Introspection
- 4.2 Introspezione dello schema
- 4.2.1 Il tipo "__Type"
- 4.2.2 Tipi di tipi
- 4.2.2.1Scalar
- 4.2.2.2Object
- 4.2.2.3Union
- 4.2.2.4Interface
- 4.2.2.5Enum
- 4.2.2.6 Oggetto di input
- 4.2.2.7List
- 4.2.2.8Non-null
- 4.2.2.9 Elenco combinato e Non null
- 4.2.3 Il tipo __Campo
- 4.2.4 Il tipo __InputValue
- 5Validation
- 5.1Operations
- 5.1.1 Definizioni operative denominate
- 5.1.1.1 Nome operativo Unicità
- 5.1.2 Definizioni operative anonime
- 5.1.2.1 Operazione anonima solitaria
- 5.2Fields
- 5.2.1 Selezioni di campo su tipi di oggetti, interfacce e unioni
- 5.2.2 Unione selezione campo
- 5.2.3 Selezioni del campo di caduta
- 5.3Arguments
- 5.3.1 Nomi degli oggetti
- 5.3.2 Unicità degli oggetti
- 5.3.3 Validità del tipo di valori degli oggetti
- 5.3.3.1 Valori compatibili
- 5.3.3.2 Argomenti necessari
- 5.4Fragments
- 5.4.1 Dichiarazioni di frammento
- 5.4.1.1 Nome del frammento Unicità
- 5.4.1.2 Esistenza del tipo di diffusione del frammento
- 5.4.1.3 Frammenti su tipi compositi
- 5.4.1.4 I frammenti devono essere utilizzati
- 5.4.2 Diffusioni di frammenti
- 5.4.2.1 Target di diffusione del frammento definito
- 5.4.2.2 Gli spread di frammentazione non devono formare cicli
- 5.4.2.3 La diffusione del frammento è possibile
- 5.4.2.3.1Object Spreads in Object Scope
- 5.4.2.3.2 Spread astratti nell'ambito dell'oggetto
- 5.4.2.3.3 Diffusione di oggetti in ambito astratto
- 5.4.2.3.4 Spread astratti in ambito astratto
- 5.5Values
- 5.5.1 Unicità del campo oggetto di input
- 5.6Directives
- 5.6.1 Le direttive sono definite
- 5.7Variables
- 5.7.1 Unicità variabile
- 5.7.2 I valori predefiniti variabili sono digitati correttamente
- 5.7.3 I variabili sono tipi di input
- 5.7.4 Tutti gli usi delle variabili definiti
- 5.7.5Tutte le variabili utilizzate
- 5.7.6 Sono consentiti tutti gli usi variabili
- 6Execution
- 6.1Valutazione delle richieste
- 6.2 Variabili di perforazione
- 6.3Valutazione delle operazioni
- 6.4Valutazione dei set di selezione
- 6.5Valutazione di un set di campi raggruppati
- 6.5.1 Voci di campo
- 6.5.2 Valutazione normale
- 6.5.3 Esecuzione seriale
- 6.5.4 Gestione degli errori
- 6.5.5Nullability
- 7Response
- 7.1 Formato di serializzazione
- 7.1.1 Serializzazione JSON
- 7.2 Formato di risposta
- 7.2.1Data
- 7.2.2Errors
- AAppendice: Convenzioni sulla notazione
- A.1 Grammatica libera da contenuti
- A.2 Grammatica lessicale e sintattica
- A.3 Notazione grammaticale
- A.4 Semantica grammatica
- A.5Algorithms
- BAppendix: Riepilogo grammaticale
- B.1 Token ignorati
- B.2 Token lessicali
- B.3 Documento di richiesta
È la vostra scelta:
Falcor JS VERSUS semplice, dolce e breve, documentato Strumento di livello enterprise con documentazione lunga e avanzata come GraphQL e relè
Come ho detto prima, se sei un sviluppatore front-end che capisce l'idea di utilizzare JSON, l'implementazione dei grafici JSON da parte del team di Falcor è il modo migliore per realizzare il tuo progetto di sviluppo full-stack.