Module

@Module() 데코레이터가 붙어 있는 클래스

각 어플리케이션에는 각각의  module이 존재 → @Module()를 이용하여 애플리케이션의 전체 구조를 이해하고 조직화하는 데 필요한 메타데이터를 제공

@Module() 가 metadata 를 제공 → NestJS 에서 어플리케이션 구조를 조직화 하기 위해 사용

 

예시 구조

src
  | - cats
// cats/ cats.module.ts

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {
	constructor(private catsService: CatsService) 
}

 

// app.modules.ts

import { Module } from '@nestjs/common';
import { CatsModule } from './cats/cats.module';

@Module({
  imports: [CatsModule],
})
export class AppModule {}

 

 

Module 의 다양한 활용방식

Module re-exporting

@Module({
  imports: [CommonModule],
  exports: [CommonModule],
})
export class CoreModule {}

 

Global module

import { Module, Global } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Global() // <<
@Module({
  controllers: [CatsController],
  providers: [CatsService],
  exports: [CatsService],
})
export class CatsModule {}

 - 모든 것을 global로 선언하는 것은 추천되지 않는 방식

 

Dynamic modules 방식은 추후에 :  https://docs.nestjs.com/fundamentals/dynamic-modules

+ Recent posts