Угловой: один модуль для каждого компонента: антипаттерн? - PullRequest
0 голосов
/ 26 апреля 2019

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

Существуют ли рекомендуемые рекомендации по нижним / верхним пределам того, сколько компонентов / директив / поставщиков / и т.д. должно быть в данном модуле?проводилось ли тестирование угловых / угловых экосистем с сотнями модулей на виде?по сравнению с тем, если бы все обычные компоненты были объединены, может быть, вместо 20-ти модулей?

Ответы [ 3 ]

2 голосов
/ 26 апреля 2019

Как правило, существуют разные типы модулей в Angular и инструкции относительно того, что они должны содержать и какие модули должны их импортировать:

  • Модули виджетов - в основном содержат компоненты пользовательского интерфейса, но не содержат сервисов. Импортировано функциональными модулями.
  • Особенности модулей - Содержит частные доменные компоненты. Импортировано AppModule.
  • Сервисные модули - Содержит исключительно услуги. Импортировано AppModule.
  • Маршрутизированные модули - специализированный функциональный модуль, который является целью маршрутизации.
  • Модули маршрутизации - содержит навигационные маршруты и службы распознавания / защиты.

Модули могут зависеть от других модулей. Например, можно ожидать, что модуль Widgets будет использоваться с модулем Services, где AppModule импортирует ServicesModule, а FeatureModule импортирует WidgetsModule. BrowserModule / CommonModule является примером этого шаблона; как и RouterModule.forRoot () / RouterModule.forChild ().

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

0 голосов
/ 26 апреля 2019

На практике угловые всегда предпочитают иметь базовый модуль -

  • Модуль функций, Общий модуль, Модуль маршрутизации, Основной модуль,

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

0 голосов
/ 26 апреля 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...