Nest.js 是如何实现 AOP 架构的?

Posted 奇舞精选

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nest.js 是如何实现 AOP 架构的?相关的知识,希望对你有一定的参考价值。

Nest.js 是一个 Node.js 的后端框架,它对 express 等 http 平台做了一层封装,解决了架构问题。它提供了 express 没有的 MVC、IOC、AOP 等架构特性,使得代码更容易维护、扩展。

这里的 MVC、IOC、AOP 都是啥意思呢?我们分别看一下:

Middleware@Module( imports: [ UsersModule, PassportModule, JwtModule.register( secret: jwtConstants.secret, signOptions: expiresIn: '60s' , ), ], providers: [AuthService, LocalStrategy], exports: [AuthService, JwtModule], )

【问题讨论】:

【参考方案1】:

要允许注册同一服务的多个变体,您将需要在JwtModule 周围使用自定义提供程序和包装器模块。它可能看起来像这样:

@Module(
  imports: [JwtModule.register(
    secret: secret1,
    signOptions:  expiresIn: '60s' ,
  )],
  providers: [
    provide: 'JwtSecret1Service',
    useExisting: JwtService,
  ],
  exports: ['JwtSecret1Service'],
)
export class JwtSecret1Module 

现在您可以使用@Inject('JwtSecret1Service') 来使用此特定配置,只要将JwtSecret1Module 添加到消费模块的imports 即可。您可以根据需要使用任意数量的JwtService 变体来执行此操作,并且每个变体都有自己的配置

【讨论】:

还有其他需要注意的配置吗?对我来说,这仍然使用初始的 JwtService 你为每个你想使用的JwtService 做这个模块,然后在你需要新服务的地方导入这个模块。然后用具体的名字代替JwtService @JayMcDoniel 您能否展示在同一模块中使用此实例的示例?我就是不能来这里。 不能在同一个模块中进行。这就是为什么您必须使用 useExisting 和自定义提供程序名称来完成这些单独的模块

以上是关于Nest.js 是如何实现 AOP 架构的?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Nest.JS 中使用多个 Secret 实现多个 JWT 策略

nestjs为啥不火

带有 sequelize 和 nest.js 的多租户

jwt+nest.js,实现登录挤出功能

nest.js学习

如何在 nest.js 中重命名 JSON 字段