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
- Especificação de relé GraphQL
- Identificação de Objetos
- Conexão
- Mutações
- Leitura adicional
REFERÊNCIA DA API
Retransmissão
- RelayContainer
- Relay.Route
- Relay.RootContainer
- Relay.QL
- Relay.Mutation
- Relay.PropTypes
- Relay.Store
INTERFACES
RelayNetworkLayer
- RelayMutationRequest
- RelayQueryRequest
b) GrapQL: https://facebook.github.io/graphql/
- 2Idioma
- 2.1Source Text
- 2.1.1Unicode
- 2.1.2 Espaço em branco
- 2.1.3 Terminadores de linha
- 2.1.4 Comentários
- 2.1.5Vírgulas insignificantes
- 2.1.6 Tokens lexicais
- 2.1.7 Tokens ignorados
- 2.1.8 Pontuadores
- 2.1.9 Nomes
- 2.2 Documento de consulta
- 2.2.1 Operações
- 2.2.2 Conjuntos de seleção
- 2.2.3Campos
- 2.2.4Argumentos
- 2.2.5 Alias do campo
- 2.2.6 Fragmentos
- 2.2.6.1 Condições de tipo
- 2.2.6.2 Fragmentos em linha
- 2.2.7 Valores de entrada
- 2.2.7.1Int Value
- 2.2.7.2 Valor do flutuador
- 2.2.7.3 Valor booleano
- 2.2.7.4 Valor da sequência
- 2.2.7.5 Valor total
- 2.2.7.6 Valor da lista
- 2.2.7.7 Valores dos objetos de entrada
- 2.2.8 Variáveis
- 2.2.8.1 Uso variável dentro dos fragmentos
- 2.2.9 Tipos de entrada
- 2.2.10 Diretivas
- 2.2.10.1 Diretivas de fragmento
- 3Tipo Sistema
- 3.1 Tipos
- 3.1.1 Escalares
- 3.1.1.1 Escalares incorporados
- 3.1.1.1.1Int
- 3.1.1.1.2 Flutuador
- 3.1.1.1.3String
- 3.1.1.1.4Boolean
- 3.1.1.1.5ID
- 3.1.2 Objetos
- 3.1.2.1 Argumentos do campo de objeto
- 3.1.2.2Desaprovação do campo de objeto
- 3.1.2.3Validação do tipo de objeto
- 3.1.3 Interfaces
- 3.1.3.1 Validação do tipo de interface
- 3.1.4Uniões
- 3.1.4.1 Validação do tipo de união
- 3.1.5Enums
- 3.1.6 Objetos de entrada
- 3.1.7 Listas
- 3.1.8 Não nulo
- 3.2Diretivas
- 3.2.1@skip
- 3.2.2@include
- 3.3 Tipos de inicialização
- 4Introspecção
- 4.1 Princípios Gerais
- 4.1.1 Convenções de nomenclatura
- 4.1.2 Documentação
- 4.1.3 Deprecação
- 4.1.4 Introspecção de nome de tipo
- 4.2 Introspecção Esquema
- 4.2.1O tipo "__Type"
- 4.2.2 Tipos de tipos
- 4.2.2.1 Escalar
- 4.2.2.2. Objeto
- 4.2.2.3 União
- 4.2.2.4.
- 4.2.2.5Enum
- 4.2.2.6 Objeto de entrada
- 4.2.2.7Lista
- 4.2.2.8 Não nulo
- 4.2.2.9 Combinando lista e não nulo
- 4.2.3 O tipo de campo
- 4.2.4 Tipo __InputValue
- 5Validação
- 5.1 Operações
- 5.1.1 Definições de operação nomeadas
- 5.1.1.1 Exclusividade do nome da operação
- 5.1.2 Definições de operação anônimas
- 5.1.2.1 Operação anônima solitária
- 5.2Campos
- 5.2.1 Seleções de campo em tipos de objetos, interfaces e uniões
- 5.2.2Fusão de seleção de campo
- 5.2.3 Seleções de campos de folhas
- 5.3 Argumentos
- 5.3.1 Nomes de argumentos
- 5.3.2 Exclusividade do argumento
- 5.3.3 Correção do tipo de valores de argumento
- 5.3.3.1 Valores compatíveis
- 5.3.3.2 Argumentos necessários
- 5.4Fragmentos
- 5.4.1 Declarações de fragmento
- 5.4.1.1 Exclusividade do nome do fragmento
- 5.4.1.2 Existência de tipo de propagação de fragmento
- 5.4.1.3 Fragmentos em tipos compostos
- 5.4.1.4 Fragmentos devem ser usados
- 5.4.2 Spreads de fragmentos
- 5.4.2.1 Meta de spread de fragmento definida
- 5.4.2.2 Spreads de fragmentos não devem formar ciclos
- 5.4.2.3 É possível espalhar fragmentos
- 5.4.2.3.1 Spreads de objetos no escopo do objeto
- 5.4.2.3.2 Spreads abstratos no escopo do objeto
- 5.4.2.3.3 Spreads de objetos no escopo abstrato
- 5.4.2.3.4 Spreads abstratos no escopo abstrato
- 5.5Valores
- 5.5.1 Exclusividade do campo de objeto de entrada
- 5.6Diretivas
- 5.6.1 Diretivas são definidas
- 5.7Variáveis
- 5.7.1 Exclusividade variável
- 5.7.2Os valores padrão variáveis são digitados corretamente
- 5.7.3As variáveis são tipos de entrada
- 5.7.4Todos os usos variáveis definidos
- 5.7.5Todas as variáveis usadas
- 5.7.6 Todos os usos variáveis são permitidos
- 6Execução
- 6.1Avaliando solicitações
- 6.2 Variáveis de coagulação
- 6.3Avaliação de operações
- 6.4Avaliando conjuntos de seleção
- 6.5Avaliando um conjunto de campos agrupados
- 6.5.1 Entradas de campo
- 6.5.2 Avaliação normal
- 6.5.3 Execução serial
- 6.5.4 Manipulação de erros
- 6.5.5 Anulabilidade
- 7Response
- 7.1 Formato de serialização
- 7.1.1 Serialização JSON
- 7.2 Formato de resposta
- 7.2.1 Dados
- 7.2.2Espelhos
- AApêndice: Convenções de Notação
- A.1 Gramática livre de contexto
- A.2 Gramática lexical e sintática
- A.3 Notação gramatical
- A.4 Semântica gramatical
- A.5 Algoritmos
- BApêndice: Resumo da gramática
- B.1 Tokens ignorados
- B.2 Tokens lexicais
- B.3 Documento de consulta
É 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.