2016-09-28 7 views
3

すべての角度2のコードを含む1つのモジュールを作成する方が良いか、複数のモジュール間ですべてを分割する方が良いかどうかは疑問です。たとえば、私はAngular 2でブログを作成しています。だから私は "article-list"コンポーネントと "article"コンポーネントを持っています。 "article-list"は記事のリストを返すサービスを呼び出し、 "ngFor"を行い、それぞれに "article"を挿入します。1つの単一のNgModuleと複数のAngular 2の組み合わせ

"article"コンポーネントには、 "article-list"と同じパターンに従う "タグリスト"コンポーネントが含まれているため、 "タグ"コンポーネントもあります。現時点では、すべてが1つのモジュールにあり、それはかなりうまくいくのですが、here、私は彼らが "英雄"関連のモジュールを作成したのを見ることができますが、本当に必要かどうかは分かりません。

実際には、メインモジュールにすべてを入れるのではなく、モジュールを作成するコストを正確には分かっていないので、モジュールを1つ続けるか、記事モジュールと"タグ" 1。

答えて

8

はい、アプリケーションをモジュールに分割できます。これにより、アプリケーション内のモジュール間の結合が減少します。大規模なアプリケーションを構築する場合は、アプリケーションを機能単位またはモジュールに分割することが重要です。

たとえば、メインモジュール名は「app.module」

あるアプリケーションは、「ヘッダ」、「ホーム」、...、「フッター」セクションで構成されています。

ヘッダーセクションでは、複数のコンポーネントを作成できます。例えば。リンク(ルート)と検索セクションを追加し、これをモジュールヘッダーに追加します。同様に、Home、Footer、およびその他のセクションには関連するモジュールが含まれています。

たとえば、ホームセクションは、多くの機能で構成された大きなセクションです。次に、複数のモジュールを作成して、ホームメインモジュールに 'home.module'と入力することができます。

以下のコードは、角2

app.module.ts

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 


import { AppComponent } from './app.component'; 
import { HeaderModule } from './header.module'; 

@NgModule({ 
    imports:  [ 
    BrowserModule, 
    HeaderModule 
    ], 
    declarations: [ 
    AppComponent, 
    ], 
    bootstrap: [ AppComponent ] 
}) 

export class AppModule { } 

header.moduleに複数のモジュールを実装する方法を示す一例です。TS

Just refer angular2 ngmodule documentation

+0

さてさて、私はコードを分割します。おかげで – ssougnez

+0

他のモジュールを置くことをお勧めしますか? app.module.tsの近くには、関連する機能の近くにありますか?ありがとう。 – Guy

+1

@Guyモジュール化された構造でアプリケーションを構築する必要があります。依存するモジュールは対応するフィーチャメインモジュールに注入されます。例あなたが大きな特徴を持っている場合、フィーチャー・フォルダーに "main.module.ts"を作成し、それに依存する他のモジュールを "main.module.ts" –

3

機能に応じて、アプリケーションをモジュールに分割するように努めてください。

  • 角モジュールは、フィーチャの分離、テスト、再利用を容易にします。
  • 角度モジュールを使用すると、ルーティング可能な機能を遅延ロードするのが容易になります。

我々は角度チュートリアルの例に固執希望の場合: それはVillainsModule下のグループにHeroesModule下のすべてのヒーローと悪役の意味を行います。第2に、アプリ内の他のモジュールとの両方に関連する共通機能がある場合は、別のモジュールを作成することができます。 CommonModule。

たとえば、Angular 2自体には、NgForおよびNgIfディレクティブなどの基本機能を提供するCommonモジュールが付属しています。

+0

import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { HttpModule } from '@angular/http'; import { InputTextModule, ButtonModule, DataTableModule, SharedModule } from 'primeng/primeng'; import { HeaderComponent } from './header.component'; import { UploadFileComponent } from './upload-file.component'; @NgModule({ imports: [ CommonModule, FormsModule, HttpModule, InputTextModule, ButtonModule, DataTableModule, SharedModule ], declarations: [ HeaderComponent, UploadFileComponent ], exports: [ HeaderComponent ] }) export class HeaderModule { } 
そしてそれはまた、このような形成されているので、基本的に「HeaderComponent」、「HomeComponent」、「FooterComponent」(、コンポーネントなどのコンポーネントが含まれているだろう「StructureModule」を作成するために意味をなさないと思いますウェブサイトの異なるページの主なデザイン)? – ssougnez