Как лениво загружать модалы в настройке модуля Angular 7 - PullRequest
4 голосов
/ 09 мая 2019

В моем предыдущем проекте мы использовали один большой «модуль приложения», который импортировал все (компоненты, каналы, директивы, страницы) в начале приложения.

Это, очевидно, не самая лучшая структура, потому что с ростом приложения оно замедляется.

Недавно мы перешли на Angular 7 с использованием Ionic 4, и теперь на маршрутах настроена отложенная загрузка с модулем для каждой страницы. Page Modules импортирует модуль компонентов

Это прекрасно работает ...

Проблема в том, что мы попадаем на модальные , которые всплывают на странице.

Примечание: я собираюсь выделить слово "модальный" жирным шрифтом , чтобы не перепутать с "модулем".

Кнопка на компоненте может открыть модальный . Поэтому компонент должен импортировать модуль модальный . Для modal необходим доступ к компонентам, поэтому он импортирует модуль Components. Это вызывает круговую зависимость.

Как правильно импортировать модалы в модульной конфигурации с отложенной загрузкой?

1 Ответ

2 голосов
/ 10 мая 2019

Я полагаю, что существует несколько способов избежать этой проблемы циклической зависимости в зависимости от вашего конкретного проекта, но одним из них может быть следующий: вместо того, чтобы быть компонентом, который открывает модальный режим, этот компонент может сообщить родителю страница для фактического открытия модального (путем отправки события на родительскую страницу при нажатии кнопки). Таким образом, родительская страница будет импортировать модальный модуль (который может иметь смысл, например, в контексте вашего приложения, если родительская страница представляет собой список домашних животных, а на модальной странице показаны сведения о каждом домашнем животном).

Я спорю между тем, чтобы пойти с этим решением или просто предоставить каждому компоненту свой собственный модуль, и импортировать только те компоненты, которые я на самом деле использую, в каждый другой компонент / страницу / модал для уничтожения циклической зависимости. Может быть, наличие модуля «базовых» компонентов для всех основных вещей, которые не имеют много зависимостей

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

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

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

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