4

我想知道是否最好创建一个包含我所有 angular 2 代码的单个模块,或者是否最好将所有内容拆分到多个模块中。例如,我正在使用 Angular 2 创建我的博客。所以我有一个“文章列表”组件和一个“文章”组件。“article-list”调用一个服务,该服务返回一个文章列表,然后对其执行“ngFor”,并为每个文章插入一个“文章”。

“文章”组件包含一个“标签列表”组件(遵循与“文章列表”相同的模式,所以我也有一个“标签”组件)。目前,一切都在一个模块中,并且运行良好,但在这里,我可以看到他们为“英雄”相关的东西创建了一个模块,但我只是想知道它是否真的有必要。

实际上,我并不完全知道创建模块的成本,而不仅仅是将所有内容都放在主模块中,所以我很难知道我应该继续使用一个模块还是创建一个“文章”模块和一个“标签”模块.

4

2 回答 2

13

是的,您可以将应用程序拆分为模块。这将减少应用程序中模块之间的耦合。如果您正在构建一个大型应用程序,则将应用程序划分为功能单元或模块非常重要。

例如,您的主模块名称是“app.module”

该应用程序由“页眉”、“主页”、...、“页脚”部分组成。

在 Header 部分中,您可以创建多个组件。例如。链接(路由)和搜索部分,将其添加到模块标题中。同样 Home、Footer 和其他部分包含相关的模块。

例如,主页部分是一个包含许多功能的大型部分,那么我们可以创建多个模块并注入到主页主模块中,例如“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 { }

只需参考 angular2 ngmodule 文档

于 2016-09-28T20:12:47.020 回答
4

您应该努力根据您的功能将您的应用程序拆分为模块。

  • Angular 模块可以更轻松地隔离、测试和重用功能。
  • Angular 模块使延迟加载可路由特性变得容易。

如果我们坚持使用 Angular 教程示例:将所有英雄分组在 HeroesModule 下,将恶棍分组在 VillainsModule 下是有意义的。其次,如果您有与它们和应用程序中的其他模块相关的通用功能,您可以创建另一个模块,例如 CommonModule。

例如,Angular 2 本身带有提供基本功能的 Common 模块,例如 NgFor 和 NgIf 指令。

于 2016-09-28T19:56:01.720 回答