Обзор на библиотеки
Angular: Akita

Akita — это шаблон управления состоянием.


Он собрал в себе сразу несколько идей:

  • идею нескольких хранилищ данных из Flux,
  • идею неизменяемых обновлений из Redux,
  • концепцию потоковой передачи данных для создания модели наблюдаемого хранилища данных.


Akita подходит как для опытных разработчиков, так и для начинающих.
Организация приложения в Akita

Организация приложения значительно отличается от Redux-подхода, присущему библиотекам NGRX и NGXS:

  • нет ни редьюсеров, ни экшенов, ни эффектов в привычном понимании,

  • сервис получения данных напрямую обновляет стор, который по своей сути является таким же сервисом в концепции ангуляра.

  • Далее, содержимое хранилища нашего стора реактивно раздаётся в компоненты посредством другого специального сервиса куэри (Query).

Организация приложения в Akita

Организация приложения значительно отличается от Redux-подхода, присущему библиотекам NGRX и NGXS:

  • нет ни редьюсеров, ни экшенов, ни эффектов в привычном понимании,

  • сервис получения данных напрямую обновляет стор, который по своей сути является таким же сервисом в концепции ангуляра.

  • Далее, содержимое хранилища нашего стора реактивно раздаётся в компоненты посредством другого специального сервиса куэри (Query).

Для организации хранения состояния нужно добавить два сервиса: Store и Query. Обычно их размещают рядом с API-сервисом.


Пример кода:
Конфигурация стора задается через декоратор, в полях и методах Query мы можем зашоткатить получение данных, расширить его любой логикой.

Компоненты API-service приобретают вид, очень похожий на имплементацию с чистым ангуляром.
Плюсы:

  • бойлерплейты отсутствуют, мы сразу создаем два сервиса

  • сервис-ориентированный подход к организации приложения является наиболее естественным для ангуляра, где сервис — это инструмент для взаимосвязи практически любых частей приложения

  • наилучшая встроенная функциональность из коробки (удобный менеджер работы с коллекциями, кэширование, поддержка работы с браузерными хранилищами, транзакции)
Минусы:

  • метод с API-сервисом, как в случае с чистым ангуляром, приобретает сайд-эффекты.
Обзоры других библиотек и финальное сравнение
ищите здесь:

Библиотека NgRx
Библиотека NgXs

Что лучше выбрать для работы с Angular —
NGRX, NGXS или Akita?