我正在审查如何在GH上的示例应用程序中实现ngrx。有人可以在下面的链接中解释为什么一个文件中有两个模块?是什么原因导致开发人员必须有两个模块代替一个?
Github link - auth module in ngrx library example app
编辑 - 可以用一个模块本身实现相同的功能。为什么创建两个模块?什么功能分裂在这里?
edit-2 - 我找到了Auth的两个模块的原因。开发人员需要导出auth服务和auth Guard等服务,以供app模块和其他模块使用。为此,他创建了AuthModule,它具有用于导出服务的forRoot静态方法。
另一个RootAuthModule具有html表单的组件,用于获取用户输入和分派操作以进行身份验证。此模块是延迟加载的,无需导出任何组件或任何服务供其他模块使用。
答案 0 :(得分:3)
您可以根据需要整理文件,但请记住,不建议将两个模块放在一个文件中:https://angular.io/guide/styleguide#rule-of-one
答案 1 :(得分:0)
两个模块都很小,开发人员认为不需要将其拆分为两个单独的文件。它们彼此非常相似,因此将它们放在同一个文件中是有意义的。我认为没有任何特殊原因,因为它根本不会改变整体情况。如果开发人员觉得他们在某一时刻变得太大,他们可以在以后分开。
至于为什么有两个模块:一个用于根级别,另一个用于子级别。这种区别的最常见示例是使用.forRoot
和.forChildren
与RouterModule
包中的官方@angular/router
。在这里,NGRX团队决定使用带有forRoot
方法的模块和用于子节点的另一个模块(因为它不需要任何参数),而不是两个静态方法。
您可以阅读有关the difference between forRoot
and forChild
here的更多信息。