2015-10-29 2 views
0

У меня есть вопрос дизайна для вас при использовании redux.Проектирование библиотеки, содержащей несколько экземпляров редукции

Основная цель - предоставить библиотеку, которая поддерживает логику нашего приложения и оставляет реализацию пользовательского интерфейса пользователю библиотеки. Эта библиотека должна будет общаться с несколькими службами, а также получать push-события из внешних источников.

Наша библиотека была сначала спроектирована так же, как и с использованием сокращенного + простого javascript. По мере развития архитектуры мы боролись с проблемой, которая преследует нас в другом приложении: у нас могут быть разные команды, работающие над этой библиотекой. Этот факт усложняет процесс разработки/развертывания.

Затем мы попытались решить эту проблему следующим:

  • , имеющих несколько «экземпляров» Redux (один для каждой команды)
  • Имея значительно меньшую общую кодовую, который содержит API и асинхронной толчок события
  • вызов к API или внешнее событие вызывает действие в каждом случае Redux
  • Новые государства группируются вместе в общую кодовую

За счет немного надстройки, это позволит нам иметь разные кодовые базы для каждой команды и отдельных процессов развертывания (за исключением общего репо, которое должно быть синхронизировано, но гораздо более прямолинейно и менее подвержено изменениям).

Считаете ли вы, что это жизнеспособное решение?

ответ

0

Я думаю, что наличие нескольких магазинов - не лучшее решение. Я думаю, было бы лучше, чтобы у каждой команды была своя библиотека из набора постоянных, создателей действий и редукторов, которые будут использоваться в одном магазине. Это упростило бы интеграцию кросс-команды, и кодовая база оказалась бы более последовательной. Самое важное - сделать слой представления более последовательным и гибким. Вы не хотите иметь тонну разных <Provider />. Лучше иметь несколько интеллектуальных компонентов.

Я не думаю, что наличие внешних разъемов и прослушивателей между приложениями было бы дорогостоящим. Там есть некоторый потенциал роста, потому что тогда вы полностью исключаете возможность конфликтов (хотя я думаю, что вы, вероятно, можете сделать это так, как я описал).

Методы API должны быть инкапсулированы вне редукции в любом случае, поэтому в любом случае это должно работать одинаково. Создатели Action должны импортировать свои асинхронные функции, а не использовать сами fetch.

Смежные вопросы