в этот субботний вечер обсудить за архитектуру ?
Это ngrx? Мне тоже это интересно
да че там обсуждать. стейт для глобальных данных, для компонентов хватит и рх-потока. Хотя не, подождите, рх-потока хватит для всего :)
вот отлично! сейчас кейсов подгоню. между тем моя ситуация такова что я вынужденно вписался в эту redux тему поскольку в проекте буквально каждая фича на ней.
для локальных данных есть практика просто создавать раздел в глобальном стейте с именем типа user-5345342, а потом вырезать его. т.е. uuid делать типа
первый раз такое вижу. у нас архитектура построена примерно следующим образом: проект поделен на фичи, каждая из которых работает с набором сущностей. к примеру фича "таски". и каждая фича имеет свой стэйт, который обрабатывает CRUD операции над сущностями. типа ТаскСтейт у него есть таски, фильтр, что то для пагинации и прочее. и компоненты восновном глупые - дергают события ("установить фильтр", "запросить таски", "создать таск" итд)
вобщем работает нормально, удобно что при обновлении одного айтама нет необходимость снова запрашивать список, данные внутри стейта поддерживаются в актуальном виде. но по сути дела все это не должно быть глобальным, это не используется как глобальный обьект и более того такой подход не дает возможности работать с несколькими выборками в один момент
У нас в rozetka была такая раньше структура bSubject в сервисах, и вроде все работало и покрывало нужды, пока проект не разросся до гигантских масштабов, и в итоге мы получили неуправляемую кашу из сотен сервисов в которых тысячи сабджектов, и это все превратилось в ад, без нормального дебага было сложно понять, что откуда и когда пришло, в какой последовательности, конструкторы умных компонентов стали выглядишь просто огроменными из за DI этих стейт сервисов, а написание тестов стало невыносимо. Переехав на ngrx все проблемы ушли
Благодарю. Используете ли вы локальные стейты или же единый глобольный стейт покрывает все ваши задачи?
Общий стейт покрывает все кейсы, мы стараемся избегать локальных стейтов по причине того они обычно используются в смарт компонентах, которые взаимодействуют с дами, вот как раз мы выделяем фича-стейт такой для такого смарт компонента в ngrx
понятно. а у меня вот начали возникать проблемы с архитектурой завязанной на глобальных состояниях. и теперь я думаю - либо я это не правильно готовлю либо нужны локальные состояния
по хорошему в большинстве случаев глобальные состояния мне не нужны - нет необходимости хранить их вечно или шарить всему приложению. но этот ньюанс с путанницей в провайдерах я учту. спасибо.
Обсуждают сегодня