一个 NgModule 与多个 Angular 2
One single NgModule versus multiples ones with Angular 2
我想知道是创建一个包含我所有 angular 2 代码的单个模块更好,还是将所有内容拆分到多个模块更好。例如,我正在使用 Angular 2 创建我的博客。所以我有一个 "article-list" 组件和一个 "article" 组件。 "article-list" 调用一个服务 returns 文章列表,然后对其执行 "ngFor" 并为每个文章插入一个 "article"。
"article" 组件包含一个 "tag-list" 组件(遵循与 "article-list" 相同的模式,因此我也有一个 "tag" 组件)。现在,一切都在一个模块中,并且工作得很好,但是 here,我可以看到他们为 "heroes" 相关的东西创建了一个模块,但我只是想知道是否真的有必要。
实际上,我并不完全知道创建模块而不是将所有内容都放在主模块中的成本,所以我很难知道我是应该继续使用一个模块还是创建一个 "articles"模块和一个 "tags" 模块。
您应该努力根据您的功能将您的应用程序拆分成模块。
- Angular 模块使隔离、测试和重用功能变得更加容易。
- Angular 模块使延迟加载可路由功能变得容易。
如果我们坚持使用 Angular 教程示例:
将所有英雄分组在 HeroesModule 下,将恶棍分组在 VillainsModule 下是有意义的。其次,如果您有与它们和应用程序中的其他模块相关的通用功能,则可以创建另一个模块,例如CommonModule.
例如,Angular 2 本身附带提供 NgFor 和 NgIf 指令等基本功能的 Common 模块。
是的,您可以将应用程序拆分为多个模块。这将减少应用程序中模块之间的耦合。如果您正在构建大型应用程序,将应用程序划分为功能单元或模块很重要。
比如你的主模块名称是'app.module'
该应用程序由 "Header"、"Home"、...、"Footer" 部分组成。
在 Header 部分您可以创建多个组件。例如。 link(路线)和搜索部分,将其添加到模块 header 中。类似地,Home、Footer 和其他部分包含相关模块。
例如,Home 部分是一个很大的部分,包含许多功能,那么我们可以创建多个模块并注入到 home 主模块中,比如 'home.module'。
下面的代码只是一个示例,展示了如何在 Angular 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
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 { }
我想知道是创建一个包含我所有 angular 2 代码的单个模块更好,还是将所有内容拆分到多个模块更好。例如,我正在使用 Angular 2 创建我的博客。所以我有一个 "article-list" 组件和一个 "article" 组件。 "article-list" 调用一个服务 returns 文章列表,然后对其执行 "ngFor" 并为每个文章插入一个 "article"。
"article" 组件包含一个 "tag-list" 组件(遵循与 "article-list" 相同的模式,因此我也有一个 "tag" 组件)。现在,一切都在一个模块中,并且工作得很好,但是 here,我可以看到他们为 "heroes" 相关的东西创建了一个模块,但我只是想知道是否真的有必要。
实际上,我并不完全知道创建模块而不是将所有内容都放在主模块中的成本,所以我很难知道我是应该继续使用一个模块还是创建一个 "articles"模块和一个 "tags" 模块。
您应该努力根据您的功能将您的应用程序拆分成模块。
- Angular 模块使隔离、测试和重用功能变得更加容易。
- Angular 模块使延迟加载可路由功能变得容易。
如果我们坚持使用 Angular 教程示例: 将所有英雄分组在 HeroesModule 下,将恶棍分组在 VillainsModule 下是有意义的。其次,如果您有与它们和应用程序中的其他模块相关的通用功能,则可以创建另一个模块,例如CommonModule.
例如,Angular 2 本身附带提供 NgFor 和 NgIf 指令等基本功能的 Common 模块。
是的,您可以将应用程序拆分为多个模块。这将减少应用程序中模块之间的耦合。如果您正在构建大型应用程序,将应用程序划分为功能单元或模块很重要。
比如你的主模块名称是'app.module'
该应用程序由 "Header"、"Home"、...、"Footer" 部分组成。
在 Header 部分您可以创建多个组件。例如。 link(路线)和搜索部分,将其添加到模块 header 中。类似地,Home、Footer 和其他部分包含相关模块。
例如,Home 部分是一个很大的部分,包含许多功能,那么我们可以创建多个模块并注入到 home 主模块中,比如 'home.module'。
下面的代码只是一个示例,展示了如何在 Angular 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
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 { }