GraphQL consta de un sistema de tipos, lenguaje de consulta y semántica de ejecución, validación estática e introspección de tipos, cada uno de los cuales se describe a continuación. Para guiarlo a través de cada uno de estos componentes, hemos escrito un ejemplo diseñado para ilustrar las diversas piezas de GraphQL.
- https://github.com/facebook/graphql
Falcor le permite representar todas sus fuentes de datos remotas como un modelo de dominio único a través de un gráfico JSON virtual. Usted codifica de la misma manera sin importar dónde estén los datos, ya sea en la memoria del cliente o en la red del servidor.
- http://netflix.github.io/falcor/
¿Cuál es la diferencia entre Falcor y GraphQL (en el contexto de Relay)?
Respuestas:
He visto el Episodio 26 de Angular Air: FalcorJS y Angular 2, donde Jafar Husain responde cómo GraphQL se compara con FalcorJS . Este es el resumen (parafraseando):
genres[0..10]
. Pero no admite consultas abiertas, por ejemplogenres[0..*]
.Jafar argumenta que en la mayoría de las aplicaciones, los tipos de consultas que van del cliente al servidor comparten la misma forma. Por lo tanto, tener operaciones específicas y predecibles como obtener y establecer expone más oportunidades para aprovechar la caché. Además, muchos de los desarrolladores están familiarizados con el mapeo de las solicitudes utilizando un enrutador simple en la arquitectura REST.
La discusión final se resuelve en torno a si el poder que viene con GraphQL supera la complejidad.
fuente
Ahora he escrito aplicaciones con ambas bibliotecas y puedo estar de acuerdo con todo en la publicación de Gajus, pero encontré algunas cosas diferentes más importantes en mi propio uso de los marcos.
fuente
Lee Byron uno de los ingenieros detrás de GraphQL hizo un AMA en hashnode , aquí está su respuesta cuando se le hizo esta pregunta:
Editar: Falcor puede procesar solicitudes por lotes , haciendo que el comentario sobre el uso de la red sea inexacto. Gracias a @PrzeoR
fuente
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
REFERENCIA API
Relé
INTERFACES
RelayNetworkLayer
b) GrapQL: https://facebook.github.io/graphql/
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.
fuente
En resumen, Falcor o GraphQL o Restful resuelven el mismo problema: proporcionan una herramienta para consultar / manipular datos de manera efectiva.
En qué se diferencian es en cómo presentan sus datos:
Siempre que necesitemos proporcionar datos para el usuario, terminamos con algo como: cliente -> consulta -> {una consulta de traducción de capa en operaciones de datos} -> datos.
Después de luchar con GraphQL, Falcor y JSON API (e incluso ODdata), escribí mi propia capa de consulta de datos . Es más simple, más fácil de aprender y más equivalente con GraphQL.
Compruébalo en:
https://github.com/giapnguyen74/nextql
También se integra con featherjs para consulta / mutación en tiempo real. https://github.com/giapnguyen74/nextql-feathers
fuente
OK, solo comienza con una diferencia simple pero importante, ¡ GraphQL es una consulta basada en Falcor !
¿Pero cómo te ayudan?
Básicamente, ambos nos ayudan a administrar y consultar datos, pero GraphQL tiene un modelo de requisitos / res y devuelve los datos como JSON , básicamente la idea en GraphQL es tener una sola solicitud para obtener todos sus datos en un solo objetivo ... Además, tener una respuesta exacta al tener una solicitud exacta, entonces algo para ejecutar en Internet de baja velocidad y dispositivos móviles, como redes 3G ... Entonces, si tiene muchos usuarios móviles o, por alguna razón, le gustaría tener menos solicitudes y una respuesta más rápida , use GraphQL ... Si bien Faclor no está muy lejos de esto, siga leyendo ...
Por otro lado, Falcor by Netflix, por lo general, tiene una solicitud adicional (generalmente más de una vez) para recuperar todos sus datos, a pesar de que intentan mejorarlo a una sola solicitud ... Falcor es más limitado para consultas y no tiene pre ayudantes de consulta definidos como rango y etc.
Pero para más aclaraciones, veamos cómo cada uno de ellos se presenta:
fuente