Ionic 3 - Нужна ли каждой странице свой модуль?

Я новичок в Ionic и пытаюсь понять, как организовать приложение среднего размера.

Должна ли каждая страница иметь свой собственный модуль? Или лучше сгруппировать похожие страницы в один и тот же модуль? Возможно ли это сделать? Похоже, что метод IonicPageModule.forChild() принимает только одну страницу:

    IonicPageModule.forChild(AdministerUsersPage)

Так нормально ли, чтобы каждая страница имела свой собственный модуль? Есть ли недостатки в наличии такого количества модулей?

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

1 ответ

Решение

Нужна ли каждой странице свой модуль?

Ответ на ваш вопрос будет: да и нет.


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

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

Использование модулей для каждой страницы также связано с глубокими ссылками. Вы можете взглянуть на документы, чтобы найти больше информации о глубоких связях и Ionic, но в основном идея за кулисами почти такая же, как и с функцией отложенной загрузки.

Или лучше сгруппировать похожие страницы в один и тот же модуль? Возможно ли это сделать?

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

Так нормально ли, чтобы каждая страница имела свой собственный модуль? Есть ли недостатки в наличии такого количества модулей?

Правильно. Ionic реализовал функцию отложенной загрузки, создав модуль для каждой страницы. Один незначительный недостаток заключается в том, что вам нужно создать модуль для каждой страницы. Поэтому, если в вашем приложении более 20 страниц, вам нужно создать более 20 модулей (но я думаю, что это не большая проблема, CLI делает всю работу за нас, верно?).

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

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


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

Другие вопросы по тегам