Size: a a a

Angular - русскоговорящее сообщество

2021 May 26

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
* если модуль встречался в нескольких лейзи(но не попал в app), то он вроде должен попадать в отдельный файл, который будет грузится при прогрузке любого из лейзи модулей.
* Если он попал только в один лейзи модуль - то только в нем и будет грузиться
* Если в app - то он грузится при загрузке приложения
источник

IE

Igor' Ember in Angular - русскоговорящее сообщество
То есть лучше разделить на отдельные модули практически все, тогда бандл будет максимально оптимален?
Я чет думал, что ангуляр все это под капотом делает
источник

IE

Igor' Ember in Angular - русскоговорящее сообщество
То есть он полностью прогрузится при первой загрузки лейзи, а дальше грузится не будет и будет использовать имеющийся? Но в этом случае получается, что, если в shared module есть не используемые компоненты (легаси или что-то, что используется в мобильной версии, или в админской версии сайта и тп), то оно все равно будет включаться в размер бандла.
источник

IE

Igor' Ember in Angular - русскоговорящее сообщество
Вынесение каждого компонента в отдельный модуль - это angular way? Это рекомендуют оф создатели ангуляра или хотя бы на конференциях (посмотреть про лейзи лоандинг для shared module пока руки не доходили)
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
да
под капотом ангуляр не умеет это делать, думаю это накладно с точки зрения времени сборки
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
верно
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
это один из подходов к реализации приложения, taiga ui его используют, например
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
мы используем что-то среднее, т.е. не используем шаред модули, но при этом и не используем component = module. Просто каждый модуль подключает только то, что ему нужно
источник

В

Владимир in Angular - русскоговорящее сообщество
в логике ангулара иного не дано. компонент дает реализацию, модуль — метаданные для фреймворка.
источник

IE

Igor' Ember in Angular - русскоговорящее сообщество
Ну да, семантически правильно
просто на практике часто видел shared module с кучей компонентов, который подключается везде где только можно
источник

IE

Igor' Ember in Angular - русскоговорящее сообщество
А если я импорчу какой-нибудь ангуляровский модуль, то он тоже включает абсолютно все, что в нем содержится? Типа common module, router module?
Чет как-то не ок 😕
источник

🏡K

🏡 ILshat Khamitov in Angular - русскоговорящее сообщество
Все что ему нужно, а не прям все при все
источник

В

Владимир in Angular - русскоговорящее сообщество
давай мух от котлет отделим?)) shared модуль предназначен для сборки в себя других модулей, а никак не компонентов) есть набор таких странных слов: провайдер и резолвер. Создавая компонент, ты определяешь класс-реализацию. В модуле ты описываешь инструкцию для IoC как зарезолвить и где запровайдить конкретный инстанс компонента. Взаимосвязь модулей строит иерархию контейнеров IoC, что и дает тебе возможность в процессе парсинга шаблона найти встреченный кастомный тег, обратиться к IoC, получить конкретную реализацию именного того компонента что тебе нужен и нарисовать его на странице.
источник

IE

Igor' Ember in Angular - русскоговорящее сообщество
Так только что же объясняли, что в случае импорта модуля импортится все, что в нем имеется
(речь сейчас не про то, когда ты отдельную штуку импортишь через деструктуризацию, а когда, например, commonModule import'ишь в другом модуле)
источник

🏡K

🏡 ILshat Khamitov in Angular - русскоговорящее сообщество
Когда через nx делаешь и модули выносишь в либы, можно граф зависимостей построить, и отследить что есть модуль бог кого все импортят, и убираешь его, чтобы такого не было, удобно, часто юзаю и развязываю что нечайно связал по бырому
источник

В

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

В

Владимир in Angular - русскоговорящее сообщество
А вообще, чтобы не путаться, стоит разобраться, что же такое "импорт" и "экспорт" в модуле. Кавычки — откровенно умышленные
источник

V

V in Angular - русскоговорящее сообщество
Никто не сталкивался с этим?
источник

IE

Igor' Ember in Angular - русскоговорящее сообщество
окей, пошел смотреть конфы по модулям ангуляра
а пока что расфасую свои компоненты по отдельным модулям...
источник

В

Владимир in Angular - русскоговорящее сообщество
😂 ну вот, я опять пришел наумничал а людям мучиться)
источник