O GraphQL consiste em um sistema de tipos, linguagem de consulta e semântica de execução, validação estática e introspecção de tipos, cada um deles descrito abaixo. Para guiá-lo por cada um desses componentes, escrevemos um exemplo projetado para ilustrar as várias partes do GraphQL.
- https://github.com/facebook/graphql
O Falcor permite representar todas as suas fontes de dados remotas como um modelo de domínio único por meio de um gráfico JSON virtual. Você codifica da mesma maneira, não importa onde estejam os dados, seja na memória do cliente ou na rede no servidor.
- http://netflix.github.io/falcor/
Qual é a diferença entre Falcor e GraphQL (no contexto do relé)?
Respostas:
Eu assisti ao Angular Air Episode 26: FalcorJS e Angular 2, onde Jafar Husain responde como o GraphQL se compara ao FalcorJS . Este é o resumo (parafraseando):
genres[0..10]
. Mas ele não suporta consultas abertas, por exemplogenres[0..*]
.Jafar argumenta que, na maioria dos aplicativos, os tipos de consultas que vão do cliente para o servidor compartilham a mesma forma. Portanto, ter operações específicas e previsíveis como obter e definir expõe mais oportunidades de alavancar o cache. Além disso, muitos desenvolvedores estão familiarizados com o mapeamento de solicitações usando um roteador simples na arquitetura REST.
A discussão final resolve se o poder que acompanha o GraphQL supera a complexidade.
fonte
Agora escrevi aplicativos com as duas bibliotecas e posso concordar com tudo no post de Gajus, mas achei algumas coisas diferentes mais importantes no meu próprio uso das estruturas.
fonte
Lee Byron, um dos engenheiros por trás do GraphQL, fez uma AMA no hashnode . Aqui está sua resposta quando essa pergunta é feita:
Edit: O Falcor pode de fato fazer solicitações em lote , tornando impreciso o comentário sobre o uso da rede. Graças a @PrzeoR
fonte
ATUALIZAÇÃO: Encontrei o comentário muito útil no meu post que quero compartilhar com você como uma coisa complementar ao conteúdo principal:
Com relação à falta de exemplos, você pode achar útil o repo awesome-falcorjs, existem diferentes exemplos de uso de CRUD do Falcor: https://github.com/przeor/awesome-falcorjs ... Segundo, existe um livro chamado " Dominando o desenvolvimento do Full Stack React ", que também inclui o Falcor (boa maneira de aprender como usá-lo):
POST ORGINAL ABAIXO:
O FalcorJS ( https://www.facebook.com/groups/falcorjs/ ) é muito mais simples de ser eficiente em comparação com o Relay / GraphQL.
A curva de aprendizado do GraphQL + Relay é ENORME:
No meu breve resumo: Vá para o Falcor. Use o Falcor em seu próximo projeto até que você tenha um orçamento grande e muito tempo de aprendizado para sua equipe, depois use RELAY + GRAPHQL.
O GraphQL + Relay possui uma enorme API na qual você deve ser eficiente. O Falcor possui uma pequena API e é muito fácil de entender para qualquer desenvolvedor front-end que esteja familiarizado com o JSON.
Se você tem um projeto AGILE com recursos limitados -> então vá para o FalcorJS!
MINHA opinião SUBJETIVA: O FalcorJS é 500% + mais fácil de ser eficiente em javascript de pilha completa.
Também publiquei alguns kits de iniciação do FalcorJS no meu projeto (+ mais projetos de exemplo do falcor com pilha cheia): https://www.github.com/przeor
Para ter mais detalhes técnicos:
1) Ao usar o Falcor, você pode usar o front-end e o back-end:
importar falcor de 'falcor';
e então construa seu modelo com base.
... você também precisa de duas bibliotecas simples de usar no back-end: a) falcor-express - você usa uma vez (por exemplo, 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-roteador - lá você define rotas SIMPLES (por exemplo, rota: '_view.length' ). Fonte: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/router.js
O Falcor é um pedaço de bolo em termos de curva de aprendizado.
Você também pode ver a documentação que é muito mais simples que a lib do FB e também verificar o artigo " por que você deve se preocupar com os falcorjs (netflix falcor) ".
2) O Relay / GraphQL é mais provável como uma grande ferramenta corporativa.
Por exemplo, você tem duas documentações diferentes que estão falando separadamente:
a) Retransmissão: https://facebook.github.io/relay/docs/tutorial.html - Contêineres - Rotas - Contêiner raiz - Estado pronto - Mutações - Camada de rede - Babel Relay Plugin - GRAPHQL
REFERÊNCIA DA API
Retransmissão
INTERFACES
RelayNetworkLayer
b) GrapQL: https://facebook.github.io/graphql/
É a sua escolha:
Falcor JS VERSUS simples e doce documentada simples Ferramenta de nível empresarial enorme com documentação longa e avançada como GraphQL & Relay
Como eu disse antes, se você é um desenvolvedor front-end que entende do uso do JSON, a implementação de gráficos JSON da equipe da Falcor é a melhor maneira de fazer seu projeto de desenvolvimento com pilha completa.
fonte
Em resumo, o Falcor, o GraphQL ou o Restful resolvem o mesmo problema - forneça uma ferramenta para consultar / manipular dados de maneira eficaz.
Como eles diferem é na forma como apresentam seus dados:
Sempre que precisamos fornecer dados para o usuário, terminamos com algo como: cliente -> consulta -> {uma camada converte a consulta em operações de dados} -> dados.
Depois de lutar com o GraphQL, Falcor e JSON API (e até com ODdata), escrevi minha própria camada de consulta de dados . É mais simples, mais fácil de aprender e mais equivalente ao GraphQL.
Confira em:
https://github.com/giapnguyen74/nextql
Ele também se integra ao featherjs para consulta / mutação em tempo real. https://github.com/giapnguyen74/nextql-feathers
fonte
OK, basta começar com uma diferença simples, mas importante, o GraphQL é uma consulta baseada no Falcor não é!
Mas como eles te ajudam?
Basicamente, ambos nos ajudam a gerenciar e consultar dados, mas o GraphQL possui um modelo de req / res e retorna os dados como JSON , basicamente a idéia no GraphQL é ter uma única solicitação para obter todos os seus dados em um objetivo ... tenha uma resposta exata com uma solicitação exata. Portanto, algo para ser executado em Internet e dispositivos móveis de baixa velocidade, como redes 3G ... Portanto, se você tiver muitos usuários móveis ou, por algum motivo, gostaria de receber menos solicitações e respostas mais rápidas , use GraphQL ... Enquanto o Faclor não esteja muito longe disso, continue lendo ...
Por outro lado, o Falcor da Netflix, geralmente tem uma solicitação extra (geralmente mais de uma vez) para recuperar todos os seus dados, mesmo que eles tentem aprimorá- los para um único requisito ... O Falcor é mais limitado para consultas e não possui pré- requisitos. auxiliares de consulta definidos como intervalo e etc ...
Mas, para mais esclarecimentos, vamos ver como cada um deles se apresenta:
fonte