* если модуль встречался в нескольких лейзи(но не попал в app), то он вроде должен попадать в отдельный файл, который будет грузится при прогрузке любого из лейзи модулей. * Если он попал только в один лейзи модуль - то только в нем и будет грузиться * Если в app - то он грузится при загрузке приложения
То есть лучше разделить на отдельные модули практически все, тогда бандл будет максимально оптимален? Я чет думал, что ангуляр все это под капотом делает
То есть он полностью прогрузится при первой загрузки лейзи, а дальше грузится не будет и будет использовать имеющийся? Но в этом случае получается, что, если в shared module есть не используемые компоненты (легаси или что-то, что используется в мобильной версии, или в админской версии сайта и тп), то оно все равно будет включаться в размер бандла.
Вынесение каждого компонента в отдельный модуль - это angular way? Это рекомендуют оф создатели ангуляра или хотя бы на конференциях (посмотреть про лейзи лоандинг для shared module пока руки не доходили)
мы используем что-то среднее, т.е. не используем шаред модули, но при этом и не используем component = module. Просто каждый модуль подключает только то, что ему нужно
А если я импорчу какой-нибудь ангуляровский модуль, то он тоже включает абсолютно все, что в нем содержится? Типа common module, router module? Чет как-то не ок 😕
давай мух от котлет отделим?)) shared модуль предназначен для сборки в себя других модулей, а никак не компонентов) есть набор таких странных слов: провайдер и резолвер. Создавая компонент, ты определяешь класс-реализацию. В модуле ты описываешь инструкцию для IoC как зарезолвить и где запровайдить конкретный инстанс компонента. Взаимосвязь модулей строит иерархию контейнеров IoC, что и дает тебе возможность в процессе парсинга шаблона найти встреченный кастомный тег, обратиться к IoC, получить конкретную реализацию именного того компонента что тебе нужен и нарисовать его на странице.
Так только что же объясняли, что в случае импорта модуля импортится все, что в нем имеется (речь сейчас не про то, когда ты отдельную штуку импортишь через деструктуризацию, а когда, например, commonModule import'ишь в другом модуле)
Когда через nx делаешь и модули выносишь в либы, можно граф зависимостей построить, и отследить что есть модуль бог кого все импортят, и убираешь его, чтобы такого не было, удобно, часто юзаю и развязываю что нечайно связал по бырому
Строго говоря, можно сделать модуль, который будет содержать в себе несколько компонентов. Например взять модуль хедер, в нем нафигачить компонентов и все запровайдить в нем. Лого, навигацию, крошки... Но когда тебе надо будет использовать навигацию в сайдбаре - ты или будешь дублировать код, или вытащишь навигацию в отдельный модуль со своим компонентом)