<aside>
👉 ***모듈(Module)***은 @Module()
레코레이터로 주석이 달린 클래스이다.
→ 조그만 클래스나 함수처럼 한 가지 일만 수행하지 않고, 여러 컴포넌트를 조합하여 작성한 큰 작업을 수행하는 단위
</aside>
각각의 Nest 어플리케이션이 실행되기 위해서는 하나 이상의 루트(root) 모듈이 존재한다.
모듈은 기본적으로 제공자들을 캡슐화한다.
→ 모듈의 일부가 아니거나 가져온 모듈에서 내보내지 않은 Provider를 주입할 수 없다.
👉 그렇다면 모듈을 사용(쪼개는)하는 이유는???
여러 모듈에게 각각의 맡은 바 책임을 나누고 응집도를 높이기 위해서이다.
→ 즉, 구성 요소를 효과적으로 구성할 수 있다.
모듈을 어떻게 나눠야 하는지 기준은 없다.
→ 설계를 하면서 유사한 기능끼리 모듈로 묶는다.
기능 모듈은 단순히 특정 기능과 관련된 코드를 구성하여 코드를 체계적으로 유지하고 명확한 경계를 설정한다.
@@filename(cats/cats.module)
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class CatsModule {}