javascript

Или Meteor

  • четверг, 3 августа 2017 г. в 03:12:09
https://habrahabr.ru/post/334726/
  • Разработка веб-сайтов
  • ReactJS
  • Meteor.JS
  • JavaScript


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-форум):



  • 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, но пока видится совсем избыточным и неидематичным :)