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
- Spécification du relais GraphQL
- Identification d'objets
- Lien
- Les mutations
- Lectures complémentaires
RÉFÉRENCE API
Relais
- RelayContainer
- Relais.Route
- Relay.RootContainer
- Relay.QL
- Relais.Mutation
- Relay.PropTypes
- Relay.Store
INTERFACES
RelayNetworkLayer
- RelayMutationRequest
- RelayQueryRequest
b) GrapQL: https://facebook.github.io/graphql/
- 2Langue
- 2.1 Texte source
- 2.1.1 Unicode
- 2.1.2 Espace blanc
- 2.1.3 Terminateurs de ligne
- 2.1.4 Commentaires
- 2.1.5 Virgules insignifiantes
- 2.1.6 Jetons exotiques
- 2.1.7 Jetons ignorés
- 2.1.8Ponctuateurs
- 2.1.9 Noms
- 2.2 Document de requête
- 2.2.1Opérations
- 2.2.2 Ensembles de sélection
- 2.2.3 Champs
- 2.2.4Arguments
- 2.2.5 Alias de champ
- 2.2.6 Fragments
- 2.2.6.1 Conditions de type
- 2.2.6.2 Fragments en ligne
- 2.2.7 Valeurs d'entrée
- 2.2.7.1 Valeur Int
- 2.2.7.2 Valeur flottante
- 2.2.7.3 Valeur booléenne
- 2.2.7.4 Valeur de chaîne
- 2.2.7.5 Valeur enum
- 2.2.7.6 Valeur de liste
- 2.2.7.7 Valeurs des objets d'entrée
- 2.2.8Variables
- 2.2.8.1Utilisation variable dans les fragments
- 2.2.9 Types d'entrée
- 2.2.10Directives
- 2.2.10.1 Directives sur les fragments
- Système 3Type
- 3.1Types
- 3.1.1Scalaires
- 3.1.1.1 Scalaires intégrés
- 3.1.1.1.1Int
- 3.1.1.1.2 Flottant
- 3.1.1.1.3 Chaîne
- 3.1.1.1.4Booléen
- 3.1.1.1.5ID
- 3.1.2Objets
- 3.1.2.1 Arguments du champ objet
- 3.1.2.2 Désapprobation du champ objet
- 3.1.2.3 Validation du type d'objet
- 3.1.3 Interfaces
- 3.1.3.1 Validation du type d'interface
- 3.1.4Unions
- 3.1.4.1 Validation du type d'union
- 3.1.5 Enums
- 3.1.6 Objets d'entrée
- 3.1.7 Listes
- 3.1.8Non-Null
- 3.2Directives
- 3.2.1@skip
- 3.2.2@inclure
- 3.3 Types de démarrage
- 4Introspection
- 4.1 Principes généraux
- 4.1.1 Conventions de nom
- 4.1.2 Documentation
- 4.1.3Déprécation
- 4.1.4 Introspection de nom de type
- 4.2 Introspection du schéma
- 4.2.1Le type "__Type"
- 4.2.2 Types de types
- 4.2.2.1Scalaire
- 4.2.2.2Objet
- 4.2.2.3 Union
- 4.2.2.4Interface
- 4.2.2.5 Énum
- 4.2.2.6 Objet d'entrée
- 4.2.2.7 Liste
- 4.2.2.8Non nul
- 4.2.2.9 Liste de combinaison et non-nul
- 4.2.3Le type __Field
- 4.2.4 Le type __InputValue
- 5Validation
- 5.1Opérations
- 5.1.1 Définitions des opérations nommées
- 5.1.1.1 Unicité du nom de l'opération
- 5.1.2 Définitions des opérations anonymes
- 5.1.2.1 Opération anonyme seule
- 5.2 Champs
- 5.2.1 Sélections de champ sur les types d'objets, d'interfaces et d'unions
- 5.2.2 Fusion de sélection de champ
- 5.2.3 Sélections des champs de feuilles
- 5.3Arguments
- 5.3.1 Noms des arguments
- 5.3.2 Unicité de l'argument
- 5.3.3 Exactitude du type des valeurs d'argument
- 5.3.3.1 Valeurs compatibles
- 5.3.3.2 Arguments requis
- 5.4 Fragments
- 5.4.1 Déclarations de fragmentation
- 5.4.1.1 Unicité du nom du fragment
- 5.4.1.2 Existence du type de propagation de fragmentation
- 5.4.1.3 Fragments sur les types composites
- 5.4.1.4 Les fragments doivent être utilisés
- 5.4.2 Tartinades de fragmentation
- 5.4.2.1 Définition de la cible d'épandage de fragmentation
- 5.4.2.2 Les pâtes à tartiner ne doivent pas former de cycles
- 5.4.2.3 La propagation des fragments est possible
- 5.4.2.3.1Object Spreads In Object Scope
- 5.4.2.3.2 Spreads abstraits dans la portée de l'objet
- 5.4.2.3.3 Spreads d'objets dans une portée abstraite
- 5.4.2.3.4 Spreads abstraites dans une portée abstraite
- 5.5Valeurs
- 5.5.1 Unicité du champ d'objet d'entrée
- 5.6Directives
- 5.6.1 Les directives sont définies
- 5.7Variables
- 5.7.1 Unicité variable
- 5.7.2 Les valeurs par défaut des variables sont correctement saisies
- 5.7.3 Les variables sont des types d'entrée
- 5.7.4 Toutes les utilisations de variables définies
- 5.7.5 Toutes les variables utilisées
- 5.7.6 Toutes les utilisations variables sont autorisées
- 6Exécution
- 6.1 Évaluation des demandes
- 6.2 Variables coercitives
- 6.3 Évaluation des opérations
- 6.4 Évaluation des ensembles de sélection
- 6.5Évaluation d'un ensemble de champs groupés
- 6.5.1 Entrées de champ
- 6.5.2 Évaluation normale
- 6.5.3 Exécution en série
- 6.5.4 Gestion des erreurs
- 6.5.5 Annulation
- 7Réponse
- 7.1 Format de sérialisation
- 7.1.1 Sérialisation JSON
- 7.2 Format de réponse
- 7.2.1 Données
- 7.2.2Erreurs
- AAppendice: Conventions de notation
- A.1 Grammaire sans contexte
- A.2 Grammaire lexicale et syntaxique
- A.3 Notation de la grammaire
- A.4 Sémantique de la grammaire
- A.5Algorithmes
- Annexe: Résumé de la grammaire
- B.1 Jetons ignorés
- B.2 Jetons exotiques
- B.3 Document de requête
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.