@ ngrx / Effects: правильная организация эффектов в отдельных Angular библиотеках - PullRequest
2 голосов
/ 31 января 2020

Мы используем несколько ориентированных на потребителя Angular SPA, которые содержат функции, которые идентичны, но также отличаются [как и следовало ожидать]. Редуктор root хранилища для каждого SPA похож, но немного отличается для поддержки сценариев использования каждого SPA.

Например, у нас есть функция аутентификации, которую используют все. Для проверки на стороне сервера он использует AuthenticationEffects. Этот эффект также полагается на хранилище, чтобы проверить, аутентифицирован ли пользователь, используя канал withLatestFrom. Там он будет собирать некоторые данные из хранилища, чтобы увидеть, есть ли уже токен аутентификации.

... и вот где я застрял. Я хочу сделать AuthenticationEffects доступным из библиотеки Angular, чтобы ее можно было повторно использовать во всех SPA. Однако эта библиотека не имеет доступа к хранилищу, поскольку каждый из редукторов хранилища root находится в соответствующих SPA.

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

Пока я могу использовать повторно действия и редукторы, добавляя их в доменные библиотеки c Angular. Тем не менее, я не могу понять, как получить эффект от SPA.

В настоящее время мы должны дублировать эти эффекты в каждом SPA.

К вашему сведению Что касается архитектурных решений go, то после небольшого прочтения мы выбрали go с одним магазином на SPA. Мы не используем StoreModule.forFeature или EffectsModule.forFeature в любом из наших лениво загруженных модулей из-за проблем с синхронизацией. Магазин полностью инициализирован и готов к go в AppModule.

Мысли и отзывы приветствуются 101

...