Note
模块
nestjs的模块介绍
发布于 更新于
Module
模块
@Module
模块控制器,为修饰对象添加元数据,告诉 NestJS 被修饰对象是一个模块
cats.module.ts
import { Module } from "@nestjs/common";
import { CatsController } from "./cats.controller";
import { CatsService } from "./cats.service";
/**
* @Module()装饰器告诉NestJS,CatsModule是一个模块类,这个模块包含控制器:CatsController,服务:CatsService
*/
@Module({
// 注册模块(@Module):当前模块需要使用哪些其他模块。注册后可以使用该模块中导出的内容。
imports:[]
// 注册控制器(@Controller): 当前模块注册哪些路由控制器
controllers: [CatsController],
// 注册服务(@Injectable):当前模块创建和管理哪些服务
providers: [CatsService],
// 导出:导出服务@Injectable,让其他模块可以使用该服务。2.导出模块@Module
exports:[]
})
export class CatsModule {}
共享模块
exports 服务 @Injectable 导出,允许地方可以通过 imports 导入其模块来使用该服务。或者导出 模块 @Module 。注意所有其他导入该模块的模块会共享同一个实例。
@Module({
controllers: [CatsController],
providers: [CatsService],
// 导出服务,其他地方可以通过imports导入 CatsModule 的模块,然后访问 CatsService。
exports: [CatsService],
})
export class CatsModule {}
全局模块
通过 @Global() 装饰器把一个模块变为全局模块,它具有全局作用域。全局模块通常应由根模块或核心模块仅注册一次
import { Module, Global } from "@nestjs/common";
import { CatsController } from "./cats.controller";
import { CatsService } from "./cats.service";
// 把CatsModule模块定义为全局模块
@Global()
@Module({
controllers: [CatsController],
providers: [CatsService],
exports: [CatsService],
})
export class CatsModule {}