Angular 2体系结构 - 跨模块的共享服务的位置

时间:2017-05-10 03:14:40

标签: angular service architecture angular2-services angular2-modules

我已经阅读了一些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.service放到app/_services以供常用吗?我应该创建一个service.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 `

1 个答案:

答案 0 :(得分:4)

如果需要,可以将用户服务导入管理组件。它只是意味着管理模块将依赖于用户模块,这是完全正常的,但您可能需要有意识地努力构建依赖树,以便它们不会失控。

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

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