我已经阅读了一些Angular 2项目架构,但它们不是我的情况。
我的问题是在哪里放置跨模块使用的共享服务。
我的项目有多个模块,例如:admin module
和user 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
`
答案 0 :(得分:4)
如果需要,可以将用户服务导入管理组件。它只是意味着管理模块将依赖于用户模块,这是完全正常的,但您可能需要有意识地努力构建依赖树,以便它们不会失控。
将所有用户服务和用户组件保留在用户内部,不要将用户服务放在共享服务文件夹中。这是最可扩展的架构。它的名称是“逐个功能”或“单一责任”。如果您启动一个“共享”文件夹,您只需从所有模块中获取服务,很快该文件夹就会很大,应用程序的所有部分都将依赖于该文件夹,从而紧密耦合整个应用程序。
参见John Papa的官方angular2风格指南,提倡单一责任:https://angular.io/docs/ts/latest/guide/style-guide.html