GraphQL состоит из системы типов, языка запросов и семантики выполнения, статической проверки и самоанализа типа, каждый из которых описан ниже. Для ознакомления с каждым из этих компонентов мы написали пример, разработанный для иллюстрации различных частей GraphQL.
- https://github.com/facebook/graphql
Falcor позволяет вам представлять все ваши удаленные источники данных в виде модели одного домена с помощью виртуального графика JSON. Вы кодируете одинаково независимо от того, где находятся данные, будь то в памяти на клиенте или по сети на сервере.
- http://netflix.github.io/falcor/
В чем разница между Falcor и GraphQL (в контексте Relay)?
Ответы:
Я посмотрел Эпизод Angular Air 26: FalcorJS и Angular 2, где Джафар Хусейн отвечает, как GraphQL сравнивается с FalcorJS . Это резюме (перефразируя):
genres[0..10]
. Но он не поддерживает открытые запросы, напримерgenres[0..*]
.Джафар утверждает, что в большинстве приложений типы запросов, которые передаются от клиента к серверу, имеют одинаковую форму. Следовательно, наличие определенных и предсказуемых операций, таких как get и set, предоставляет больше возможностей для использования кэша. Кроме того, многие разработчики знакомы с отображением запросов с использованием простого маршрутизатора в архитектуре REST.
Окончательное обсуждение решает, перевешивает ли сила, которая приходит с GraphQL, сложность.
источник
Сейчас я написал приложения для обеих библиотек, и я могу согласиться со всем в посте Gajus, но нашел несколько разных вещей, наиболее важных в моем собственном использовании фреймворков.
источник
Ли Байрон (Lee Byron), один из разработчиков GraphQL, сделал AMA для hashnode , вот его ответ на вопрос:
Изменить: Falcor может действительно пакетные запросы , делая комментарий об использовании сети неточным. Благодаря @PrzeoR
источник
ОБНОВЛЕНИЕ: Я нашел очень полезный комментарий в своем посте, которым я хочу поделиться с вами как дополнение к основному содержанию:
Что касается отсутствия примеров, вы можете найти репозиторий 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
API ССЫЛКА
Реле
ИНТЕРФЕЙС
RelayNetworkLayer
б) GrapQL: https://facebook.github.io/graphql/
Это твой выбор:
Простой и удобный документированный Falcor JS VERSUS Огромный инструмент корпоративного уровня с длинной и расширенной документацией, такой как GraphQL & Relay
Как я уже говорил ранее, если вы являетесь разработчиком внешнего интерфейса, который понимает идею использования JSON, то реализация графов JSON от команды Falcor - лучший способ сделать ваш проект полностью готовым.
источник
Короче говоря, Falcor или GraphQL или Restful решают ту же проблему - предоставляют инструмент для эффективного запроса / обработки данных.
Чем они отличаются в том, как они представляют свои данные:
Всякий раз, когда нам нужно предоставить данные для пользователя, мы получаем что-то вроде: client -> query -> {слой переводит запрос в data ops} -> data.
После борьбы с GraphQL, Falcor и JSON API (и даже ODdata) я написал свой собственный уровень запроса данных . Это проще, легче учиться и более эквивалентно с GraphQL.
Проверьте это на:
https://github.com/giapnguyen74/nextql
Он также интегрируется с featherjs для запроса / мутации в реальном времени. https://github.com/giapnguyen74/nextql-feathers
источник
Хорошо, просто начните с простого, но важного различия: GraphQL основан на запросах, тогда как Falcor нет!
Но как они тебе помогают?
По сути, они оба помогают нам управлять данными и запрашивать их, но у GraphQL есть модель req / res. возвращает данные в виде JSON. По сути, идея в GraphQL состоит в том, чтобы иметь один запрос для получения всех ваших данных в одной цели ... Кроме того, иметь точный ответ, имея точный запрос, так что что-то для запуска на низкоскоростных интернет и мобильных устройствах, таких как сети 3G ... Так что если у вас много мобильных пользователей или по каким-то причинам вы хотели бы иметь меньше запросов и более быстрый ответ , используйте GraphQL ... Хотя Faclor не так уж далек от этого, так что читайте дальше ...
С другой стороны, Falcor от Netflix, как правило, имеют дополнительный запрос (обычно более одного раза), чтобы получить все ваши данные, даже если они пытаются улучшить его до единого требования ... Falcor более ограничен для запросов и не имеет пред определяемые помощники запросов, такие как диапазон и т. д.
Но для большей ясности посмотрим, как каждый из них представится:
источник