В период с 2016 по 2018 год я работал в Angular, Spring, Hibernate. Моя основная работа была в интерфейсе (Angular), эволюционные изменения коснулись Angular.

Google переписал полную базу кода, реализовал «инкрементную модель DOM» и многое другое.

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

Это одна из ключевых функций, которыми известен Angular 2+.

Чтобы понять Subject, нам нужно знать, что такое инкрементальная модель DOM в Angular.

Что такое инкрементальная модель DOM

Как мы знаем, Angular полностью основан на компонентах. Допустим, у вас есть компонент навигации, который никогда не уничтожается в полном приложении. Это означает, что он всегда будет виден на всех маршрутах приложения. Инкрементный DOM поможет повторно отобразить только компонент навигации, когда для него когда-либо вносятся изменения из любого места в приложении. Это дает нам возможность не перезагружать приложение снова, просто чтобы проверить новые изменения на панели навигации.

Каждый компонент компилируется в серию инструкций. Эти инструкции создают деревья DOM и обновляют их на месте при изменении данных.

React использует концепцию Virtual DOM для достижения той же функциональности

Основная причина использования Тема - многоадресная рассылка. Observable по умолчанию является одноадресным. Unicast означает, что каждый подписанный наблюдатель владеет независимым выполнением Observable

Многоадресная рассылка в основном означает, что одно выполнение Observable совместно используется несколькими подписчиками.

Мы передаем наш Subject функции подписки и позволяем ей принимать значения, которые поступают из Observable (потребляющие данные). Все подписчики на эту тему немедленно получат это значение.

Если вы когда-нибудь столкнетесь со сценарием, когда ваши подписки Observable получают разные значения, используйте Subjects. Субъекты будут следить за тем, чтобы каждая подписка имела то же значение, что и выполнение Observable, распределяемое между подписчиками.

Просто подпишитесь на Sujbect и расслабьтесь и расслабьтесь. Изменения будут автоматически отражены в компоненте, у которого есть подписчик на эту тему.

Вы также можете написать код, чтобы остановить наблюдение за темой.

Примечание. Не забудьте отменить подписку на тему, если она вам больше не понадобится, иначе это приведет к большой утечке памяти.

Лучше использовать канал ASYNC для решения указанной выше проблемы с утечкой памяти.

ASYNC pipe возьмет на себя всю ручную работу по подписке и отказу от подписки на компонент

В следующем посте я расскажу о конвейере ASYNC и о том, почему его так круто использовать в приложении angular, чтобы избежать утечки памяти.

Спасибо за прочтение

Удачного обучения :)