кодесурса
«Угловое

Типы функциональных модулей

script1adsense2code
script1adsense3code

Что такое функциональные модули

Функциональные модули - это NgModules для организации кода.

Существует пять основных категорий функциональных модулей, которые, как правило, делятся на следующие группы:

  • Доменные функциональные модули.
  • Маршрутизированные функциональные модули.
  • Модули маршрутизации.
  • Сервисные функциональные модули.
  • Функциональные модули виджетов.

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

Функциональный модуль Методические рекомендации
Домен

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

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

Функциональные модули домена состоят в основном из объявлений. Только верхний компонент экспортируется.

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

Функциональные модули домена обычно импортируются ровно один раз большим функциональным модулем.

Они могут быть импортированы корневым AppModule небольшого приложения, которому не хватает маршрутизации.

Направлен

Маршрутизированные функциональные модули - это функциональные модули домена, главные компоненты которых являются целями маршрутов навигации маршрутизатора.

Все лениво загруженные модули являются по определению маршрутизированными функциональными модулями.

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

Ленивый загруженный маршрутизируемый функциональный модуль не должен импортироваться никаким модулем. Это вызвало бы активную загрузку, побеждая цель ленивой загрузки. Это означает, что вы не увидите их упомянутыми в импорте AppModule. Загруженный маршрутизированный функциональный модуль должен быть импортирован другим модулем, чтобы компилятор узнал о его компонентах.

У маршрутизируемых функциональных модулей редко есть поставщики по причинам, объясненным в разделе Ленивая загрузка функциональных модулей. Когда они это делают, срок службы предоставляемых услуг должен совпадать с временем жизни модуля. Не предоставляйте одноуровневые сервисы для всего приложения в маршрутизируемом модуле функций или в модуле, который импортирует маршрутизированный модуль.

маршрутизация

Модуль маршрутизации обеспечивает конфигурацию маршрутизации для другого модуля и отделяет проблемы маршрутизации от его сопутствующего модуля.

Модуль маршрутизации обычно выполняет следующие действия:

  • Определяет маршруты.
  • Добавляет конфигурацию маршрутизатора к импорту модуля.
  • Добавляет поставщиков услуг защиты и распознавания для поставщиков модуля.
  • Имя модуля маршрутизации должно совпадать с именем его сопутствующего модуля с использованием суффикса «Маршрутизация». Например, FooModule в foo.module.ts имеет модуль маршрутизации с именем FooRoutingModule в foo-routing.module.ts. Если сопутствующий модуль является корневым AppModule, AppRoutingModule добавляет в свой импорт конфигурацию маршрутизатора с помощью RouterModule.forRoot (маршруты). Все остальные модули маршрутизации являются дочерними, которые импортируют RouterModule.forChild (маршруты).
  • Модуль маршрутизации повторно экспортирует RouterModule для удобства, чтобы компоненты сопутствующего модуля имели доступ к директивам маршрутизатора, таким как RouterLink и RouterOutlet.
  • Модуль маршрутизации не имеет своих собственных объявлений. Компоненты, директивы и каналы находятся в ведении функционального модуля, а не модуля маршрутизации.

Модуль маршрутизации должен быть импортирован только его сопутствующим модулем

обслуживание

Сервисные модули предоставляют сервисные услуги, такие как доступ к данным и обмен сообщениями. В идеале они состоят исключительно из провайдеров и не имеют деклараций. HttpClientModule от Angular является хорошим примером сервисного модуля.

Корневой AppModule - единственный модуль, который должен импортировать служебные модули.

Виджет

Модуль виджета делает компоненты, директивы и каналы доступными для внешних модулей. Многие сторонние библиотеки компонентов UI являются модулями виджетов.

Модуль виджета должен состоять полностью из объявлений, большинство из которых экспортировано.

Модуль виджета редко должен иметь провайдеров.

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

В следующей таблице приведены основные характеристики каждой группы функциональных модулей.

Функциональный модуль Объявления Провайдеры экспорт Импортировано
Домен да редкий Верхний компонент Функция, AppModule
Направлен да редкий нет Никто
маршрутизация нет Да (охранники) RouterModule Особенность (для маршрутизации)
обслуживание нет да нет AppModule
Виджет да редкий да Особенность

Предыдущий: Входные компоненты
Следующая: Angular Singleton Service

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code