3

我已经阅读了一些 Angular 2 项目架构,但它们不是我的情况。

我的问题是在哪里放置跨模块使用的共享服务。

我的项目有多个模块,例如:admin moduleuser module.

这是这个结构:

app |admin | |- some admin components | |- admin.module |user | |- some user components | |- shared | |- user.service | |- user.module

问题是:我想在管理模块的某些组件中检索用户信息。因此,我将用户服务导入管理模块并将其放置在管理模块提供程序中。

我认为这不是一个好习惯。

我发现了这个:http: //jasonwatmore.com/post/2016/08/16/angular-2-jwt-authentication-example-tutorial 但我不知道这是否是一个好习惯。我应该放置user.serviceapp/_services常用的地方吗?我应该创建一个 services.module 来初始化 user.service,然后将服务模块导入其他模块吗?

app |_services | |- user.service |admin | |- some admin components | |- admin.module - import and set user.service to provider |user | |- some user components | |- user.module - import and set user.service to provider `

4

1 回答 1

4

如果需要,可以将用户服务导入管理组件。这只是意味着管理模块将依赖于用户模块,这完全没问题,但是您可能需要有意识地构建依赖树,以免它们失控。

将所有用户服务和用户组件保存在用户内部,不要将用户服务放在共享服务文件夹中。这是最可扩展的架构。它的名称为“按功能文件夹”或“单一责任”。如果您启动一个“共享”文件夹,您只需在其中插入所有模块的服务,那么该文件夹很快就会变得很大,并且您的应用程序的所有部分都将依赖于该文件夹,从而紧密耦合您的整个应用程序。

请参阅 John Papa 倡导单一责任的官方 angular2 风格指南:https ://angular.io/docs/ts/latest/guide/style-guide.html

于 2017-05-10T03:39:05.227 回答