2

私はいくつかのAngular 2プロジェクトアーキテクチャについて読んだことがありますが、それらは私の場合ではありません。角型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.serviceapp/_servicesを共通に使用しますか? user.serviceを初期化するservices.moduleを作成し、サービスモジュールを他のモジュールにインポートする必要がありますか?

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 `

+0

は、別のモジュールを作成... 'SharedModule'がそこ*共有*コンポーネント/サービス/クラスを置くようなものを。これを使うには、 'UserModule'と' AdminModule'の中でモジュールをインポートするだけです。 – developer033

+0

NekModuleは、Eeks33のように、あまり設計されておらず、不要で、混乱する抽象化である –

+0

@ developer033です。この場合、私のすべてのモジュールは 'SharedModule'と緊密に結合しています。私は 'SharedModule 'も持っていますが、別の目的のために使われています。私の 'SharedModule'には、複数のモジュールで再利用されるいくつかの一般的なコンポーネント、ディレクティブ、クラス(フォームグループ、ページング、ツリービューなど)が含まれています。 ありがとうございます。 –

答えて

3

あなたがする必要がある場合には、管理コンポーネントにユーザーサービスをインポートするには罰金です。それは管理モジュールがユーザーモジュールに依存することを意味しますが、これは完全にうまくいきますが、あなたの依存ツリーを構造化して手に入らないように意識的な努力をしたいことがあります。

すべてのユーザーサービスとユーザーコンポーネントをユーザーの内部に置いて、ユーザーサービスを共有サービスフォルダーに入れないでください。これは最もスケーラブルなアーキテクチャです。それは「フォルダごとの特徴」または「単一の責任」という名前になります。すべてのモジュールのサービスをスティックする「共有」フォルダを起動すると、すぐにそのフォルダが大きくなり、アプリケーションのすべての部分がそのフォルダに依存し、アプリケーション全体がしっかりと結合されます。

参照してくださいシングル責任を提唱ジョン・パパの公式angular2スタイルガイド:https://angular.io/docs/ts/latest/guide/style-guide.html

+0

あなたの提案をありがとう! あなたは私の日を救った。 –

関連する問題