Реле против Redux против Apollo с GraphQL и React-Native
Я должен начать новый (веб-+ родной) проект (приложение среднего размера) с нуля. Из-за множества инфраструктур JS и реализации там, особенно в последние пару лет, у меня было второе сомнение в моем обычном стеке.
Я использую response + redux на интерфейсе вместе с Node и MongoDB на бэкэнд, обмениваясь через API REST.
Для этого нового проекта я решил пойти с React-Native + React Native для Web + Node + PostgreSQL. Тем не менее, мне интересно, какую структуру я должен использовать для сбора данных и управления состоянием/хранилищем.
До сих пор редукс работал у меня красиво. Однако из-за характера эволюции JS. Я немного скептически отношусь к тому же стек, который я использовал в прошлом.
Каковы плюсы и минусы, если я иду со следующим стеком
React-Native + React-Native-For-Web + Redux + GraphQL + Node + PostgreSQL
React-Native + React-Native-For-Web + Relay + GraphQL + Node + PostgreSQL
React-Native + React-Native-For-Web + Apollo + GraphQL + Node + PostgreSQL
Я прочитал много статей, в которых говорится о преимуществах использования каждой структуры, но количество контента и статей немного страшно. Я понимаю, что нет правильного или неправильного ответа. Тем не менее, было бы неплохо узнать, какой вышеупомянутый стек идет хорошо вместе, имея в виду - меньше кривая обучения, хорошая документация, ремонтопригодность, меньше обходных решений.
Ответы
Ответ 1
Я думаю, что если вы исходите из фона React + Redux, то Apollo должен быть для вас!
Примечание. Если вы полный новичок в GraphQL, я рекомендую вам проверить Как GraphQL, где вы найдете обучающие материалы как на Реле и Аполлон.
Несколько фрагментов информации:
- Реле очень мощное, но также чрезвычайно сложное и имеет заметную кривую обучения.
- Apollo строит поверх Redux, хотя это не очень важно для вас как разработчика, потому что магазин скрыт от вас. Однако аналогичные понятия, как в Redux, используются, например, для обновления магазина с
updateQueries
.
- Это также довольно справедливо для объединить хранилище Apollo с вашим собственным хранилищем Redux, если вы хотите управлять состоянием, отличным от кэшированных данных с сервера
- С помощью Apollo вы также можете использовать подписки в реальном времени
- Я бы определенно рекомендовал не использовать Apollo или Relay и работать только с Redux, так как обе структуры выполняют заметную работу с ваших плеч, когда дело доходит до отправки запросов, мутаций, кеширования и обновлений пользовательского интерфейса. Однако вы можете взглянуть на Lokka, если вы ищете более легкий клиент GraphQL.
Взгляните на эту подробную статью, сравнив Relay и Apollo для получения дополнительной информации.
Если вы хотите узнать больше о Relay и Apollo, посетите веб-сайт Как сделать GraphQL.
Кстати, другой вариант для бэкэнд, если вы не хотите его самостоятельно строить, будет Graphcool (отказ от ответственности: я работаю для их:)).
Ответ 2
Обучение Apollo было очень выполнимо с этим курсом, который я сделал на Udemy, GraphQL с React и Apollo
У меня нет опыта работы с Relay, но мне стало сложнее узнать, поэтому, если время является фактором, Apollo может быть хорошим решением:) Удачи.