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

Реактивное программирование парадигма программирования. В реактивном программировании есть потоки асинхронных событий, которые можно комбинировать. Реактивность заключается в том, что весь код реагирует на входящие события. Так пока понимаю его я, и это совсем не определение. Мне понравился тьюториал по реактивному программированию. Пользуюсь реактивным программированием, мы можем работать с состоянием в функциональном стиле. У нас есть возможность использовать неизменяемые структуры данных и чистые функции. Это существенно упрощает рассуждения о работе систем.

RxJS релизация идей реактивного программирования. RxJS строится вокруг Observables, которые и являются потоками асинхронных событий из реактивного программирования. Библиотека предоставляет множество средств комбинирования Observable, которые называются операторами. С помощью этой библиотеки можно строить очень разные приложения, ходить в базу данных, читать с диска, скачивать страницы сайтов. И всё это модно, функционально и асинхронно.

Flux паттерн разработки пользовательских интерфейсов от Facebook, использую идеи реактивного программирования. Flux оперирует следующими базовыми компонентами, для использования реактивного программирования в построние пользовательских интерфейсов:

  • Dispatcher - слушает Action и отправляет и в Store
  • Store - хранит данные приложения
  • Action - тип действия и данные, которые позволяют извне менять Store
  • View - отображает данные содержащиеся в Store, получая уведомления об изменениях из Store; также пользовательские действия формируются в View и отправляются в Dispatcher

Redux популярная реализация Flux. Есть Actions и Store. Dispatcher реализован с помощью метода dispatch. View можно использовать любой понравившийся, например React.

@ngrx/store основанная на RxJS реализация идей из Redux для Angular. В Redux происходит навешивание слушателей c помощью subscribe. В @ngrx сделано через RxJS observable и pipeable оператора.

Выглядит это все очень необычно. Высокий порог входа и трудно писать программы в таком стиле. Но в этом определенно что-то есть.