3

Angular 2 プロジェクトのアーキテクチャについて読んだことがありますが、私の場合ではありません。

私の質問は、モジュール間で使用される共有サービスをどこに配置するかです。

私のプロジェクトには複数のモジュールがあります。たとえばadmin module、 とuser module.

この構造は次のとおりです。

app |admin | |- some admin components | |- admin.module |user | |- some user components | |- shared | |- user.service | |- user.module

問題は、管理モジュールの一部のコンポーネントでユーザーの情報を取得したいということです。そこで、ユーザー サービスを管理モジュールにインポートし、それを管理モジュール プロバイダーに配置します。

これは良い習慣ではないと思います。

私はこれを見つけました: http://jasonwatmore.com/post/2016/08/16/angular-2-jwt-authentication-example-tutorial しかし、それが良い習慣であるかどうかはわかりません。私は共通の使用のために配置user.serviceする必要がありますか?app/_servicesservices.module を作成して user.service を初期化し、サービス モジュールを他のモジュールにインポートする必要がありますか?

app |_services | |- user.service |admin | |- some admin components | |- admin.module - import and set user.service to provider |user | |- some user components | |- user.module - import and set user.service to provider `

4

1 に答える 1

4

必要に応じて、ユーザー サービスを管理コンポーネントにインポートしても問題ありません。これは、管理モジュールがユーザー モジュールに依存することを意味するだけであり、これはまったく問題ありませんが、依存ツリーが手に負えなくなることのないように意識的に構造化する必要がある場合があります。

すべてのユーザー サービスとユーザー コンポーネントをユーザー内に保持し、ユーザー サービスを共有サービス フォルダーに配置しないでください。これは最もスケーラブルなアーキテクチャです。「機能ごとのフォルダー」または「単一の責任」という名前で呼ばれます。すべてのモジュールからのサービスに固執するだけの「共有」フォルダーを開始すると、すぐにそのフォルダーが巨大になり、アプリケーションのすべての部分がそのフォルダーに依存し、アプリケーション全体が緊密に結合されます。

単一の責任を提唱する John Papa の公式の angular2 スタイル ガイドを参照してください: https://angular.io/docs/ts/latest/guide/style-guide.html

于 2017-05-10T03:39:05.227 に答える