【问题标题】:why this auth module has two modules in one file?为什么这个身份验证模块在一个文件中有两个模块?
【发布时间】:2018-08-23 09:02:20
【问题描述】:

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

Github link - auth module in ngrx library example app

edit - 一个模块本身可以实现相同的功能。为什么要创建两个模块?这里的功能是什么?

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

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

【问题讨论】:

    标签: angular


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      同一个文件

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

      两个模块

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

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

      【讨论】:

      • 除了一个文件/两个文件 - 一个模块本身可以实现相同的功能。为什么要创建两个模块?这里的功能是什么?
      • 我找到了对我的问题的更好解释。感谢您的输入。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多