ОБНОВЛЕНИЕ: Я нашел очень полезный комментарий в своем посте, которым я хочу поделиться с вами как дополнение к основному содержанию:
Что касается отсутствия примеров, вы можете найти репозиторий awesome-falcorjs полезным, есть различные примеры использования CRUD Falcor:
https://github.com/przeor/awesome-falcorjs ... Во-вторых, есть книга под названием " Освоение разработки полного стека React ", в которую также входит Falcor (хороший способ научиться его использовать):
ОРИГИНАЛЬНАЯ ПОЧТА НИЖЕ:
FalcorJS ( https://www.facebook.com/groups/falcorjs/ ) намного проще для эффективности по сравнению с Relay / GraphQL.
Кривая обучения для GraphQL + Relay огромна:
В моем кратком резюме: пойти на Falcor. Используйте Falcor в своем следующем проекте, пока у вас не будет большого бюджета и много времени на обучение для вашей команды, а затем используйте RELAY + GRAPHQL.
GraphQL + Relay имеет огромный API, в котором вы должны эффективно работать. Falcor имеет небольшой API и его очень легко понять любому фронт-разработчику, знакомому с JSON.
Если у вас AGILE-проект с ограниченными ресурсами -> тогда переходите на FalcorJS!
Мое СУБЪЕКТИВНОЕ мнение: FalcorJS на 500% проще в эффективном использовании полнофункционального JavaScript.
Я также опубликовал несколько стартовых наборов FalcorJS для моего проекта (+ более полные стеки примеров проектов Falcor): https://www.github.com/przeor
Чтобы быть больше в технических деталях:
1) Когда вы используете Falcor, вы можете использовать как на переднем конце, так и на бэкенде:
импортировать сокол от «сокол»;
а затем построить свою модель на основе.
... вам также нужны две библиотеки, которые просты в использовании на сервере: a) falcor-express - вы используете его один раз (например, app.use ('/ model.json', FalcorServer.dataSourceRoute (() => new NamesRouter) ())) ). Источник: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/index.js
б) falcor-router - там вы определяете ПРОСТЫЕ маршруты (например, route: '_view.length' ). Источник:
https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/router.js
Falcor это кусок пирога с точки зрения кривой обучения.
Вы также можете просмотреть документацию, которая намного проще, чем библиотека FB, и проверить также статью « почему вы должны заботиться о falcorjs (netflix falcor) ».
2) Relay / GraphQL скорее похож на огромный корпоративный инструмент.
Например, у вас есть две разные документации, о которых отдельно говорится:
a) Реле: https://facebook.github.io/relay/docs/tutorial.html
- Контейнеры - Маршруты - Корневой контейнер - Состояние готовности - Мутации - Сетевой уровень - Плагин Babel Relay - GRAPHQL
- GraphQL Relay Спецификация
- Идентификация объекта
- соединение
- Мутации
- Дальнейшее чтение
API ССЫЛКА
Реле
- RelayContainer
- Relay.Route
- Relay.RootContainer
- Relay.QL
- Relay.Mutation
- Relay.PropTypes
- Relay.Store
ИНТЕРФЕЙС
RelayNetworkLayer
- RelayMutationRequest
- RelayQueryRequest
б) GrapQL: https://facebook.github.io/graphql/
- 2Language
- 2.1 Исходный текст
- 2.1.1Unicode
- 2.1.2Белое пространство
- 2.1.3 Линейные терминаторы
- 2.1.4Comments
- 2.1.5 Незначительные запятые
- 2.1.6 Лексические токены
- 2.1.7 Игнорируемые токены
- 2.1.8Punctuators
- 2.1.9Names
- 2.2 Запрос документа
- 2.2.1Operations
- 2.2.2 Наборы выбора
- 2.2.3Fields
- 2.2.4Arguments
- 2.2.5 Псевдоним поля
- 2.2.6Fragments
- 2.2.6.1Типовые условия
- 2.2.6.2 Встроенные фрагменты
- 2.2.7Входные значения
- 2.2.7.1Int Value
- 2.2.7.2 Значение плавания
- 2.2.7.3Boolean Value
- 2.2.7.4Строка
- 2.2.7.5 Значение Enum
- 2.2.7.6 Значение списка
- 2.2.7.7Входные значения объекта
- 2.2.8Variables
- 2.2.8.1Переменное использование внутри фрагментов
- 2.2.9Входные типы
- 2.2.10Directives
- 2.2.10.1 Фрагмент Директивы
- 3Тип Система
- 3.1Types
- 3.1.1Scalars
- 3.1.1.1Встроенные скаляры
- 3.1.1.1.1Int
- 3.1.1.1.2Float
- 3.1.1.1.3String
- 3.1.1.1.4Boolean
- 3.1.1.1.5ID
- 3.1.2Objects
- 3.1.2.1 Аргументы поля объекта
- 3.1.2.2 Амортизация поля объекта
- 3.1.2.3 Проверка типа объекта
- 3.1.3Interfaces
- 3.1.3.1 Проверка типа интерфейса
- 3.1.4Unions
- 3.1.4.1Совместная проверка типа
- 3.1.5Enums
- 3.1.6 Входные объекты
- 3.1.7Lists
- 3.1.8Non-Null
- 3.2Directives
- 3.2.1@skip
- 3.2.2@include
- 3.3Начальные типы
- 4Introspection
- 4.1Общие принципы
- 4.1.1 Соглашения об именах
- 4.1.2Documentation
- 4.1.3Deprecation
- 4.1.4. Самоанализ имени типа
- 4.2Схема самоанализ
- 4.2.1Тип "__Type"
- 4.2.2 Типы видов
- 4.2.2.1Scalar
- 4.2.2.2Object
- 4.2.2.3Union
- 4.2.2.4Interface
- 4.2.2.5Enum
- 4.2.2.6Входной объект
- 4.2.2.7List
- 4.2.2.8Non-нуль
- 4.2.2.9 Комбинированный список и ненулевое значение
- 4.2.3 Тип __Field
- 4.2.4 Тип __InputValue
- 5Validation
- 5.1Operations
- 5.1.1Назначенные определения операций
- 5.1.1.1 Уникальность имени операции
- 5.1.2 Определения анонимной операции
- 5.1.2.1 Одинокая анонимная операция
- 5.2Fields
- 5.2.1 Выбор полей для типов объектов, интерфейсов и объединений
- 5.2.2 Слияние выбора поля
- 5.2.3 Выбор полей листа
- 5.3Arguments
- 5.3.1 Имена аргументов
- 5.3.2 Аргумент Уникальность
- 5.3.3. Тип значения аргумента Корректность
- 5.3.3.1Совместимые значения
- 5.3.3.2 Обязательные аргументы
- 5.4Fragments
- 5.4.1 Фрагментные объявления
- 5.4.1.1 Уникальность имени фрагмента
- 5.4.1.2. Наличие типа спреда фрагмента
- 5.4.1.3 Фрагменты на составных типах
- 5.4.1.4. Должны использоваться фрагменты
- 5.4.2 Фрагментные спреды
- 5.4.2.1 Определена цель распространения фрагмента
- 5.4.2.2 Фрагменты спредов не должны образовывать циклы
- 5.4.2.3 Возможно распространение фрагмента
- 5.4.2.3.1 Распространение объекта в области объекта
- 5.4.2.3.2 Абстрактные спреды в области объекта
- 5.4.2.3.3 Распространение объектов в абстрактной области
- 5.4.2.3.4 Абстрактные спреды в абстрактной области
- 5.5Values
- 5.5.1Входность поля объекта ввода
- 5.6Directives
- 5.6.1. Директивы определены
- 5.7Variables
- 5.7.1 Переменная Уникальность
- 5.7.2 Переменные значения по умолчанию правильно набраны
- 5.7.3 Переменные являются типами ввода
- 5.7.4Все переменные определены
- 5.7.5Все используемые переменные
- 5.7.6Все допустимо использование всех переменных
- 6Execution
- 6.1Оценка запросов
- 6.2Применение переменных
- 6.3Оценка операций
- 6.4Оценка наборов выбора
- 6.5Оценка сгруппированного набора полей
- 6.5.1Подписки полей
- 6.5.2 Нормальная оценка
- 6.5.3Серийное исполнение
- 6.5.4 Обработка ошибок
- 6.5.5Nullability
- 7Response
- 7.1Сериализация Формат
- 7.1.1JSON Сериализация
- 7.2 Формат ответа
- 7.2.1Data
- 7.2.2Errors
- AAppendix: условные обозначения
- A.1Контекстная грамматика
- A.2Лексическая и синтаксическая грамматика
- A.3 Грамматическая нотация
- A.4 Грамматическая семантика
- A.5Algorithms
- BAppendix: Грамматическое Резюме
- B.1 Игнорируемые токены
- B.2Лексические токены
- B.3 Запросный документ
Это твой выбор:
Простой и удобный документированный Falcor JS VERSUS Огромный инструмент корпоративного уровня с длинной и расширенной документацией, такой как GraphQL & Relay
Как я уже говорил ранее, если вы являетесь разработчиком внешнего интерфейса, который понимает идею использования JSON, то реализация графов JSON от команды Falcor - лучший способ сделать ваш проект полностью готовым.