Angular 2将应用程序组织到不同的ngModules中

时间:2016-09-02 12:28:25

标签: angular organization decoupling

我已经分享了“英雄之旅”以试图说明这篇文章。我希望英雄有“配饰”:

https://embed.plnkr.co/Q12h1BUUi19CPWiwbA9q/

从plnkr,配件看起来像这样:

export interface Accessory {
    id: number;
    name: string;
}

mock-heroes.ts中,我为英雄添加了一些有用的配件:

export var HEROES: Hero[] = [
    {"id": 11, "name": "Mr. Nice", "accessories": [
      {"id": 954, "name": "Gift"}
    ]},
    {"id": 12, "name": "Narco", "accessories": [
      {"id": 1843: "name": "Syringe"}
    ]},
    {"id": 13, "name": "Bombasto", "accessories": [
      {"id": 1452, "name": "panties"}
    ]},
    {"id": 14, "name": "Celeritas", "accessories": [
      {"id": 453, "name": "Sun glasses"}  
    ]},
    {"id": 15, "name": "Magneta", "accessories": [
      {"id": 18, "name": "Magnet"},
      {"id": 343, "name": "Iron"}
    ]},
    {"id": 16, "name": "RubberMan", "accessories": [
      {"id": 86, "name": "Rubber"},
      {"id": 453, "name": "Sun glasses"}
    ]},
    {"id": 17, "name": "Dynama", "accessories": [
      {"id": 1452, "name": "Panties"}
    ]},
    {"id": 18, "name": "Dr IQ", "accessories": [
      {"id": 1001, "name": "Brain"}
    ]},
    {"id": 19, "name": "Magma", "accessories": [
      {"id": 89, "name": "Plutonium"}
    ]},
    {"id": 20, "name": "Tornado", "accessories": [
      {"id": 10, "name": "Blowhole"},
      {"id": 45, "name": "Fan"}
    ]}
];

这是一种非常简单但天真的方式来增加我的英雄配件(我猜)。

首先,我的直觉说Hero和Accessory都是两个独立的功能块,因此它们应该在他们自己的ngModule中声明,以及他们自己的指令,组件,服务等。

所以我正在考虑将应用程序构建为三个不同的模块: AppModule(根),HeroModule,AccessoryModule

如果分离逻辑统治英雄和管理附件的逻辑,那么我应该如何创建一个英雄和他的配件之间的关系?

我不能像上面那样用他们的配件来模仿英雄:

export var HEROES: Hero[] = [
{"id": 11, "name": "Mr. Nice", 
   "accessories": [
      {"id": 954, "name": "Gift"} this module
    ] // <- accessories will not be part of 
},

不是将配件立即存放在英雄中,我可以参考配件。从这些参考资料中,我可以通过专用的AccessoryService获取附件。 mock-heroes.ts看起来像这样:

export var HEROES: Hero[] = [
{"id": 11, "name": "Mr. Nice", "accessories": [954, 1335] },

我不确定这里最好的选择是什么?将两个实体分成他们自己独特的ngModule是否真的有意义,如果是这样,如何正确地建立英雄和他们的配件之间的关系。

我知道这个问题可能非常广泛,但我希望能找到一些帮助。

最佳, 迈克尔

0 个答案:

没有答案