Pull to refresh

Или Meteor

Reading time 2 min
Views 11K

React без Redux, как водка без пива — деньги на ветер. Если React решает вопрос "интерфейс — функция состояния", то Redux предлагает архитектуру движения данных в приложении. Но вот незадача, что выбрать для взаимодействия с бекендом? В случае с REST-API, можно дергать Fetch, или взять чуть более функциональный Axios. Для WebSocket-ов есть Socket.io (крайне рекомендую к прочтению). А какие могут быть инструменты уровнем повыше? Реализация транспорта данных между фронтeндом и бекендом — не наша печаль.


Например, FeatherJS — можно переключать внутри протокол между REST и SocketIO без изменения API взаимодействия клиента, там просто Redux-интерфейс. Ещё есть Apollo и Logux, как две противоположности, но их тоже объединяет Redux-интерфейс.


Подключаешь требуемые React-компоненты к Redux и они дергаются по мере изменения данных. Запросы на такие изменения тоже проходят через "черный ящик" Redux. При всем разнообразии реализаций, мы получаем одинаковый результат. Красота.


А если вспомнить изоморфный Meteor (с которым я попрощался год назад), там много интересного: Data Distribution Protocol, Pub/Sub-взаимодействие и MiniMongo на клиенте с Optimistic Updates. Как обстоят дела в Meteor сейчас — React там давно, но что про подключение всего этого к Redux?


Индийский разработчик Abhi Aiyer опубликовал на Medium серию статей, вроде бы разобрав все возможные аспекты (насколько я проштудировал Meteor-форум):


  • How we Redux  — прямое подключение MiniMongo к Redux.


  • Reactivity with Redux and Meteor — как обеспечить Optimistic Updates через Redux Middleware.


  • Building Reactive Props with Meteor and Recompose — альтернативный подход, композиция в Redux штатной библиотеки React-Meteor-Data.


  • И финалочка, 10 tips to get off the Meteor — гы-гы, основные пункты:
    • Replace Minimongo/Tracker/ReactiveVar/Session
    • Microservice Feature Development
    • Get on Apollo
    • For Legacy systems that still need DDP, use Asteroid, if you want to share login state between this SPA and your main Meteor app (comment down below I can help you out). With Asteroid you can still hit your Meteor backend for legacy pub/sub and meteor methods. (But you should be using GraphQL right?)


Пожалуйста, поделитесь опытом применения React+Redux в Meteor.


P.S. Да, я знаю о существовании MobX, не применял на практике, может оно и упростит магию реактивности в Meteor, но пока видится совсем избыточным и неидематичным :)

Tags:
Hubs:
+3
Comments 11
Comments Comments 11

Articles