web-dev-qa-db-ja.com

Ionic 3コンポーネントとページ

Ionic 3アプリのComponentPageジェネレーターの違いを教えてください。コンポーネント内でもionViewWillLeaveなどのページライフサイクルフックを使用できるようです。angularライフサイクルフックはいつ使用する必要がありますか。同じ場合、なぜ2つのジェネレーターがあるのですか?このフィードバックをお寄せください。

コンポーネントジェネレーター:

 ionic generate component SubscribeTopicComponent

ページジェネレータ:

ionic generate page LoginPage
45
Sampath

コメントからの会話に基づいて:

Angularの観点からは同じかもしれませんが、Ionicではページとコンポーネントの意味が異なります。 Angularの観点では、両方とも単なるコンポーネントです、しかしIonicのコンテキストでは、ページはビュー全体としてとして機能するコンポーネントです(ネストされたコンポーネントがある場合があります); Ionicページはスタンドアロンコンセプトとして表示されます。コンポーネントは、ほとんどの場合Angularアプリの大きなコンポーネントの一部にすぎないため、Pagesの最大の違いだと思います。

Angularのライフサイクルフックの使用については、ネストされたコンポーネントで作業するときに使用するのが好きですが、ページで作業するときはIonicライフサイクルフックを使用します。主にionViewWillEnterのようなものは、ngOnInitが行う単純なコンポーネントのコンテキストではあまり意味をなさないためです。そうは言っても、ngOnDestroyのようなAngularライフサイクルフックも使用しました(ページが破棄されるときにページからすべてのサブスクリプションを削除するために使用しました)が、 Ionicのライフサイクルフックを使用する場合、ionViewWillUnloadが正しい方法のようです。

Ionicライフサイクルフックのmostは、ユーザーがページ全体と対話する方法により関連していると思います(ページに入る、ページから出る、ページに入る、ページから出ることができる...)およびAngularライフサイクルフックは、さまざまな段階により関連しています単一のコンポーネントの寿命(入力が初期化され、変更検出器がこのコンポーネントに変更があったかどうかを確認しました...)まったく、通常はユーザーが認識していないものです。

どのアプローチがより良いかについての規則はないはずですが、最も重要なことは一貫性です。 PagesであるコンポーネントでIonicライフサイクルフックを使用し、ネストされたコンポーネント内でAngularライフサイクルフックを使用するのが理にかなっていると思います、しかし、別のアプローチを使用できます、アプリ全体で一貫して行う限り。

55
sebaferreras

Ionicに1つの余分なデコレータが追加されたため、2つの別個のジェネレータがあります:@IonicPage

このデコレータには、単純なコンポーネントに比べていくつかの利点があります。

  1. ルーティング-ページのURL、アクセス方法、デフォルトの履歴を確認できます。これにより、ナビゲーションパスを経由せずに任意のページに直接アクセスできます。このページへのルーティングは、実際のコンポーネントではなく文字列を使用して行うこともできます

  2. 遅延読み込み-このデコレータを持つページのモジュールは、ページのURLにアクセスするとデフォルトで遅延読み込みされます。

  3. アプリモジュールに依存しません-これは個人的なお気に入りですが、ページであるモジュールを作成する場合、元のngModuleに追加する必要はなく、コンパイル時に自動的に行われます。

その他のドキュメント: https://ionicframework.com/docs/api/navigation/IonicPage/

7
misha130