ACTUALIZACIÓN: He encontrado un comentario muy útil debajo de mi publicación que quiero compartir con ustedes como algo complementario al contenido principal:
Con respecto a la falta de ejemplos, puede encontrar útil el repositorio de awesome-falcorjs, hay diferentes ejemplos del uso de CRUD de Falcor:
https://github.com/przeor/awesome-falcorjs ... En segundo lugar, hay un libro llamado " Dominar el desarrollo de Full Stack React ", que también incluye Falcor (buena forma de aprender a usarlo):
POST ORIGINAL ABAJO:
FalcorJS ( https://www.facebook.com/groups/falcorjs/ ) es mucho más simple para ser eficiente en comparación con Relay / GraphQL.
La curva de aprendizaje para GraphQL + Relay es ENORME:
En mi breve resumen: ve por Falcor. Use Falcor en su próximo proyecto hasta que USTED tenga un gran presupuesto y mucho tiempo de aprendizaje para su equipo, luego use RELAY + GRAPHQL.
GraphQL + Relay tiene una API enorme en la que debe ser eficiente. Falcor tiene una API pequeña y es muy fácil de entender para cualquier desarrollador front-end que esté familiarizado con JSON.
Si tiene un proyecto AGILE con recursos limitados -> ¡entonces elija FalcorJS!
Mi opinión subjetiva: FalcorJS es 500% + más fácil de ser eficiente en JavaScript de pila completa.
También he publicado algunos kits de inicio de FalcorJS en mi proyecto (+ más proyectos de ejemplo de falcor de pila completa): https://www.github.com/przeor
Para estar más en detalles técnicos:
1) Cuando usa Falcor, puede usar tanto en el front-end como en el backend:
importar falcor de 'falcor';
y luego construye tu modelo basado en.
... también necesita dos bibliotecas que sean fáciles de usar en el backend: a) falcor-express: lo usa una vez (por ejemplo, app.use ('/ model.json', FalcorServer.dataSourceRoute (() => new NamesRouter) ())) ). Fuente: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/index.js
b) enrutador falcor: allí se definen rutas SIMPLES (por ejemplo, ruta: '_view.length' ). Fuente:
https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/router.js
Falcor es pan comido en términos de curva de aprendizaje.
También puede ver documentación que es mucho más simple que la biblioteca de FB y consultar también el artículo " por qué debería preocuparse por los falcorjs (netflix falcor) ".
2) Relay / GraphQL es más probable como una gran herramienta empresarial.
Por ejemplo, tiene dos documentaciones diferentes de las que se habla por separado:
a) Relé: https://facebook.github.io/relay/docs/tutorial.html
- Contenedores - Rutas - Contenedor raíz - Estado preparado - Mutaciones - Capa de red - Complemento de relé Babel - GRAPHQL
- Especificación de retransmisión GraphQL
- Identificación de objeto
- Conexión
- Mutaciones
- Otras lecturas
REFERENCIA API
Relé
- RelayContainer
- Relé.Ruta
- Relay.RootContainer
- Relay.QL
- Relé Mutación
- Relay.PropTypes
- Relay.Store
INTERFACES
RelayNetworkLayer
- RelayMutationRequest
- RelayQueryRequest
b) GrapQL: https://facebook.github.io/graphql/
- 2Idioma
- 2.1 Texto de origen
- 2.1.1 Unicode
- 2.1.2 Espacio blanco
- 2.1.3 Terminadores de línea
- 2.1.4Comentarios
- 2.1.5 Comas insignificantes
- 2.1.6 Fichas Léxicas
- 2.1.7 Fichas ignoradas
- 2.1.8 Puntuadores
- 2.1.9 Nombres
- 2.2 Documento de consulta
- 2.2.1 Operaciones
- 2.2.2 Conjuntos de selección
- 2.2.3 Campos
- 2.2.4 Argumentos
- 2.2.5 Alias de campo
- 2.2.6 Fragmentos
- 2.2.6.1 Condiciones de tipo
- 2.2.6.2 Fragmentos en línea
- 2.2.7 Valores de entrada
- 2.2.7.1 Valor entrante
- 2.2.7.2 Valor flotante
- 2.2.7.3 Valor booleano
- 2.2.7.4 Valor de cadena
- 2.2.7.5 Valor de enumeración
- 2.2.7.6 Valor de la lista
- 2.2.7.7 Valores de objeto de entrada
- 2.2.8 Variables
- 2.2.8.1 Uso variable dentro de fragmentos
- 2.2.9 Tipos de entrada
- 2.2.10 Directivas
- 2.2.10.1 Directivas de fragmentos
- Sistema 3Type
- 3.1 Tipos
- 3.1.1 Escalares
- 3.1.1.1 Escalares incorporados
- 3.1.1.1.1 En
- 3.1.1.1.2 Flotador
- 3.1.1.1.3String
- 3.1.1.1.4 Booleano
- 3.1.1.1.5ID
- 3.1.2 Objetos
- 3.1.2.1 Argumentos de campo de objeto
- 3.1.2.2 Desuso de campo de objeto
- 3.1.2.3 Validación de tipo de objeto
- 3.1.3 Interfaces
- 3.1.3.1 Validación de tipo de interfaz
- 3.1.4 Uniones
- 3.1.4.1 Validación de tipo de unión
- 3.1.5 Enums
- 3.1.6 Objetos de entrada
- 3.1.7Listas
- 3.1.8 No nulo
- 3.2Directivas
- 3.2.1@skip
- 3.2.2@include
- 3.3 Tipos de inicio
- 4Introspección
- 4.1 Principios generales
- 4.1.1 Convenciones de nomenclatura
- 4.1.2Documentación
- 4.1.3Deprecación
- 4.1.4 Introspección de nombre de tipo
- 4.2 Introspección de esquemas
- 4.2.1 El tipo "__Type"
- 4.2.2 Tipos de tipos
- 4.2.2.1 Escalar
- 4.2.2.2 Objeto
- 4.2.2.3 Unión
- 4.2.2.4 Interfaz
- 4.2.2.5 Enum
- 4.2.2.6 Objeto de entrada
- 4.2.2.7 Lista
- 4.2.2.8 No nulo
- 4.2.2.9 Lista combinada y no nula
- 4.2.3 El __Tipo de campo
- 4.2.4 El tipo __InputValue
- 5 Validación
- 5.1 Operaciones
- 5.1.1 Definiciones de operación nombradas
- 5.1.1.1 Nombre único de la operación
- 5.1.2 Definiciones de operaciones anónimas
- 5.1.2.1 Operación anónima solitaria
- 5.2 Campos
- 5.2.1 Selecciones de campo en objetos, interfaces y tipos de uniones
- 5.2.2 Fusión de selección de campo
- 5.2.3 Selecciones de campo de hoja
- 5.3 Argumentos
- 5.3.1 Nombres de argumentos
- 5.3.2 Singularidad del argumento
- 5.3.3 Valores del argumento Tipo Corrección
- 5.3.3.1 Valores compatibles
- 5.3.3.2 Argumentos requeridos
- 5.4 Fragmentos
- 5.4.1 Declaraciones de fragmentos
- 5.4.1.1 Unicidad del nombre del fragmento
- 5.4.1.2 Existencia de tipo de extensión de fragmento
- 5.4.1.3 Fragmentos en tipos compuestos
- 5.4.1.4 Deben usarse fragmentos
- 5.4.2 Extensiones de fragmentos
- 5.4.2.1 Objetivo de propagación de fragmentos definido
- 5.4.2.2 Los diferenciales de fragmentos no deben formar ciclos
- 5.4.2.3 Se puede extender el fragmento
- 5.4.2.3.1 Extensiones de objeto en el alcance del objeto
- 5.4.2.3.2 Extensiones abstractas en el alcance del objeto
- 5.4.2.3.3 Extensiones de objeto en alcance abstracto
- 5.4.2.3.4 Extensiones abstractas en alcance abstracto
- 5.5 Valores
- 5.5.1 Singularidad del campo del objeto de entrada
- 5.6Directivas
- 5.6.1 Se definen las directivas
- 5.7 Variables
- 5.7.1 Singularidad variable
- 5.7.2 Los valores predeterminados variables se escriben correctamente
- 5.7.3 Las variables son tipos de entrada
- 5.7.4 Todos los usos variables definidos
- 5.7.5 Todas las variables utilizadas
- 5.7.6 Se permiten todos los usos variables
- 6ejecución
- 6.1 Evaluaciones de solicitudes
- 6.2 Variables de coacción
- 6.3 Operaciones de evaluación
- 6.4 Evaluación de conjuntos de selección
- 6.5 Evaluación de un conjunto de campos agrupados
- 6.5.1 Entradas de campo
- 6.5.2 Evaluación normal
- 6.5.3 Ejecución en serie
- 6.5.4 Manejo de errores
- 6.5.5 Anulabilidad
- 7Respuesta
- 7.1 Formato de serialización
- 7.1.1 Serialización JSON
- 7.2 Formato de respuesta
- 7.2.1 Datos
- 7.2.2 Errores
- AApéndice: Convenciones de notación
- A.1 Gramática sin contexto
- A.2 Gramática léxica y sintáctica
- A.3 Notación Gramática
- A.4 Semántica de gramática
- A.5 Algoritmos
- BAppendix: Resumen de gramática
- B.1 Fichas ignoradas
- B.2 Fichas Léxicas
- B.3 Documento de consulta
Es tu elección:
Falcor JS VERSUS documentado simple y dulce, herramienta de grado empresarial enorme con documentación larga y avanzada como GraphQL y Relay
Como dije antes, si usted es un desarrollador front-end que comprende la idea de usar JSON, la implementación de gráficos JSON del equipo de Falcor es la mejor manera de hacer su proyecto de desarrollo completo.