15

マイクロソフトでは、記事「Building Single Page Applications on ASP.NET Core with JavaScriptServices」に記載されているように、ASP.NET CoreでAngular(AngularJSではなく)を開発するための素晴らしいテンプレートを提供しています。ASP.NETコア角テンプレート:app.module.clientとapp.module.server

非常に単純ですが、テンプレートの一部があります。ただ単にapp.module.tsというファイルではなく、app.module.client.tsapp.module.server.tsの両方があります。

screenshot of <code>app.module.client.ts</code> and <code>app.module.server.ts</code>

私は、ウェブ上でこれを説明する何かを見つけることができませんでした。誰もが、なぜアプリケーションモジュールのためのこれらの2つの別々のファイルがあるか、彼らの特定の用途は何か、どのようにそれらを使用するか、何か考えている?

それがすべてで助けている場合、ここでの完全なテンプレートは次のようになります。私はClientApp/app/modelsClientApp/app/servicesは、私は自分の目的のために追加した2つのフォルダであることに注意すべきである

full ASP.NET Core Angular template

。それらはテンプレートの一部ではありません。また、app.module.shared.tsは実際には非常に単純なもので、コードを2回書く必要がないので、心配しないでください。ここで

は、2つのファイルがどのように見えるかです:、

<code>app.module.client.ts</code> and <code>app.module.server.ts</code> code side-by-side

答えて

4

は、私はこの声明の正確さに、私は100%ではないんだということ巻頭ことから始めましょう、しかし、誰もが答えているようだしないので、私はそれを撃つだろう。

Angular 2のMicrosoft SPAは、AOTレンダリングを行うためにAngular Universalを利用していました。 Angular Universalを使用しないAngular 4を使用するようにアップグレードされました。私の考えは、AOTレンダリングを支援するためにapp.module.tsをクライアントとサーバーファイルに分割したものです。

実際、app.module.shared.tsファイルは、app.module.client.tsおよびapp.module.server.tsによって使用される単なるグローバル定数です。パブリッシュ時にはすべてが2つのjsファイルにレンダリングされるため、app.moduleファイルを分割することは実際には問題になりません。

+2

ああ、大丈夫です。使い方はどうですか?たとえば、コンポーネントを宣言すると、それはクライアント、サーバー、または共有に移動する必要がありますか?プロバイダーはどうですか?輸入品ですか?すべてのものを共有することが大切なのでしょうか?あるファイルに特定のものを入れて、他のファイルには何かを入れるべきなのでしょうか? – NetherGranite

+1

コンポーネントで使用されるサービスへの参照を追加しようとすると、そのような参照をapp.module.serverとapp.module.clientの両方のプロバイダに追加する必要があることがわかりました。私はhttps://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/WEB-103(下の私のコメントを参照)に従おうとしていて、サンプルサービスへの参照を上記のファイル。 – danfer

+1

私がやったのは、app.module.shared.tsにサービスのインポートを設定し、それらを共有のプロバイダに追加することです。app.module.serverとapp.module.clientで、sharedConfig.providersへの参照を追加するだけです。サーバーとクライアントの各ファイルの@NgModuleの「providers」セクションにあります。この方法では、新しいサービスを追加する必要がある場合は、各ファイルで行う必要はありません。共有するだけです。 2つの異なるサービスでテストされ、うまくいった – danfer

関連する問題