为什么这个auth模块在一个文件中有两个模块?

时间:2018-03-14 17:40:45

标签: angular

我正在审查如何在GH上的示例应用程序中实现ngrx。有人可以在下面的链接中解释为什么一个文件中有两个模块?是什么原因导致开发人员必须有两个模块代替一个?

Github link - auth module in ngrx library example app

编辑 - 可以用一个模块本身实现相同的功能。为什么创建两个模块?什么功能分裂在这里?

edit-2 - 我找到了Auth的两个模块的原因。开发人员需要导出auth服务和auth Guard等服务,以供app模块和其他模块使用。为此,他创建了AuthModule,它具有用于导出服务的forRoot静态方法。

另一个RootAuthModule具有html表单的组件,用于获取用户输入和分派操作以进行身份​​验证。此模块是延迟加载的,无需导出任何组件或任何服务供其他模块使用。

2 个答案:

答案 0 :(得分:3)

您可以根据需要整理文件,但请记住,不建议将两个模块放在一个文件中:https://angular.io/guide/styleguide#rule-of-one

答案 1 :(得分:0)

相同文件

两个模块都很小,开发人员认为不需要将其拆分为两个单独的文件。它们彼此非常相似,因此将它们放在同一个文件中是有意义的。我认为没有任何特殊原因,因为它根本不会改变整体情况。如果开发人员觉得他们在某一时刻变得太大,他们可以在以后分开。

两个模块

至于为什么有两个模块:一个用于根级别,另一个用于子级别。这种区别的最常见示例是使用.forRoot.forChildrenRouterModule包中的官方@angular/router。在这里,NGRX团队决定使用带有forRoot方法的模块和用于子节点的另一个模块(因为它不需要任何参数),而不是两个静态方法。

您可以阅读有关the difference between forRoot and forChild here的更多信息。