【问题标题】:Advantages of using @Module NestJS使用@Module NestJS 的优势
【发布时间】:2022-01-13 01:05:25
【问题描述】:

我正在制作一个新的 NestJS 应用程序,在第一次出现很多错误之后,因为我创建的多个模块没有正确的 importsprovidersexportsTypeOrmModule.forFeature 等让我想知道:重点是什么?

为什么不只使用app.module 并将所有内容都转储到其中?所有控制器、服务和实体类型以及可能出现的任何其他内容?

来自文档:

我们要强调的是,强烈建议将模块作为 组织组件的有效方法

这是唯一的原因吗?组织? 依赖注入是否起到某种作用?

编辑:

如果组织是主要原因,为什么不将控制器和服务分开在不同的文件夹中?基本上是一个没有导入、提供程序等的模块。用更少的样板做同样的事情。

【问题讨论】:

    标签: nestjs


    【解决方案1】:

    为什么不只使用 app.module 并转储其中的所有内容?

    更好的是,为什么要使用多个文件?为什么不只是有几千行 index.js 没有类型,没有组织,只是原始 JS 一路向下?

    答案?代码组织和易于重用。通过制作这些模块,您应该将相似的逻辑组合在一起。只需导入 FeatureModule 即可获得单个功能的所有代码应该并可用。对于库模块,这一点非常明显:TypeOrmModule 有一个 forRoot/forRootAsync 和一个 forFeature,它们公开了将存储库注入您的服务的方法。 JwtModule 有一个 register/registerAsync 并公开了一个 JwtService,因此您可以配置一次 JwtService 并重新使用提供程序。

    在处理实体特征时,这可能看起来更麻烦,但从技术上讲,这一切仍然是可能的,因此理论上您可以从应用程序 A 中获取 FeatureModule 并将其放入应用程序 B 并让一切仍然正常工作到FeatureModule,类似于pulumi 的堆栈和应用程序概念,您可以使用同一组组件启动新应用程序。

    模块系统,一旦你掌握了它,并且在我看来,它可以很容易地识别所有模块将使用什么,关于其他功能以及它们是如何连接的。这只是纪律和学习框架特性的问题。

    【讨论】:

    • 所以答案是肯定的?仅组织(也许,只是也许,在另一个项目中重用)?
    猜你喜欢
    • 2011-11-22
    • 2014-11-09
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多