Подтвердить что ты не робот

Компонент Ionic 3 против страницы

Можете ли вы рассказать мне, в чем разница между генератором Component и Page в приложении Ionic 3? Кажется, я могу использовать крючки жизненного цикла страницы, такие как ionViewWillLeave внутри компонента. Так когда я должен использовать angular крючки жизненного цикла, тогда? Если это то же самое, то почему у него есть 2 генератора? Надеюсь, вы предоставите обратную связь для этого.

Генератор компонентов:

 ionic generate component SubscribeTopicComponent

Генератор страниц:

ionic generate page LoginPage
4b9b3361

Ответ 1

Основываясь на разговоре из комментариев:

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

О том, что при использовании крючков жизненного цикла Angular мне нравится использовать их при работе с вложенными компонентами, но я предпочитаю перехваты жизненного цикла Ionic при работе на страницах. В основном потому, что такие вещи, как ionViewWillEnter, не имеют особого смысла в контексте простого компонента, где ngOnInit делает. При этом я также использовал несколько крючков жизненного цикла Angular на страницах, например, ngOnDestroy (я использовал его для удаления всех подписей со страницы, когда эта страница будет уничтожена), но, как вы сказали, ionViewWillUnload, кажется, правильный способ сделать это, если мы хотим использовать перехватчики жизненного цикла Ionic.

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

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

Ответ 2

Есть два отдельных генератора, потому что один дополнительный декоратор, который был добавлен в ионный: @IonicPage

Этот декоратор дает несколько преимуществ перед простым компонентом.

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

  • Lazy loading - модуль страницы, у которой этот декоратор будет загружен по умолчанию при переходе к URL-адресу страницы.

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

Для получения дополнительной документации: https://ionicframework.com/docs/api/navigation/IonicPage/