NestJS学习笔记之模块

模块@Module

每个Nest应用程序至少有一个模块,即根模块。根模块是 Nest 开始安排应用程序树的地方。事实上,根模块可能是应用程序中唯一的模块,特别是当应用程序很小时,但是对于大型程序来说这是没有意义的。在大多数情况下,您将拥有多个模块,每个模块都有一组紧密相关的功能。

1.基本用法

当我们使用nest g res user 创建一个CURD 模板的时候 nestjs 会自动帮我们引入模块

2.共享模块

例如user的Service想暴露给 其他模块使用就可以使用exports导出该服务

由于App.modules已经引入过该模块,就可以直接使用user模块的Service

3.全局模块

@Global()

我们给user模块添加@Global(),它便注册为全局模块

在list模块使用无须再去list.module.ts中导入,直接在list.controller中使用即可

4.动态模块

动态模块主要就是为了给模块传递参数,可以给该模块添加一个静态方法用来接受参数,返回的对象里面module,providers,exports都是必须的,且module的值要跟模块名称一致。

import { DynamicModule, Global, Module } from "@nestjs/common";

interface Options {
  path: string
}

@Global()
@Module({

})
export class ConfigModule {
  static forRoot(options: Options): DynamicModule {
    return {
      module: ConfigModule,
      providers: [
        {
          provide: "Config",
          useValue: { baseApi: "/api" + "/" + options.path }
        },
      ],
      exports: [
        {
          provide: "Config",
          useValue: { baseApi: "/api" + "/" + options.path }
        }
      ]
    }
  }
}

注意,自定义的值也是需要导出的

要在app.module中进行引入

注意,无论当前模块是不是全局模块,一律都需要在app.module进行引入,因为app.mudule是根模块

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UserModule } from './user/user.module';
import { ListModule } from './list/list.module';
import { ConfigModule } from './config/config.module';

@Module({
  imports: [UserModule, ListModule, ConfigModule.forRoot({
    path:'zl'
  })],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule { }

在app.controller中使用

结果

静态写法,直接在Module里面写,值写死,不让动态传递参数

import { DynamicModule, Global, Module } from "@nestjs/common";

interface Options {
  path: string
}

@Global()
@Module(
  {
    providers:[
      {
        provide:'Config',
        useValue:'zl'
      }
    ],
    exports:[
      {
        provide:'Config',
        useValue:'zl'
      }
    ]
  }
)
export class ConfigModule {
  
}

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值