
모듈은 데코레이터로 주석이 달린 클래스입니다.
이 데코레이터는 Nest가 애플리케이션 구조를 효율적으로 구성하고 관리하는 데 사용하는 메타데이터를 제공합니다.
모든 Nest 애플리케이션에는 최소 하나의 모듈, 즉 루트 모듈 이 있으며, 이 모듈은 Nest가 애플리케이션 그래프를 구축하는 시작점 역할을 합니다 . 이 그래프는 Nest가 모듈과 제공자 간의 관계와 종속성을 확인하는 데 사용하는 내부 구조입니다. 소규모 애플리케이션에는 루트 모듈만 있을 수 있지만, 일반적으로는 그렇지 않습니다. 모듈은 구성 요소를 효과적으로 구성하는 방법으로 적극 권장됩니다 . 대부분의 애플리케이션에는 여러 모듈이 있으며, 각 모듈은 밀접하게 관련된 기능 집합을 캡슐화합니다 .
데코레이터 @Module()는 모듈을 설명하는 속성을 가진 단일 객체를 가져옵니다.
providers: Nest 인젝터에 의해 인스턴스화되고 최소한 이 모듈 전체에서 공유될 수 있는 공급자
controllers: 이 모듈에 정의된 컨트롤러 세트는 인스턴스화되어야 합니다.
imports: 이 모듈에 필요한 공급자를 내보내는 가져온 모듈 목록
exports: 이 모듈에서 제공하는 하위 집합은 providers이 모듈을 가져오는 다른 모듈에서도 사용할 수 있어야 합니다. 제공자 자체를 사용하거나 토큰( provide값) 만 사용할 수 있습니다.
모듈은 기본적으로 프로바이더를 캡슐화합니다 . 즉, 현재 모듈에 포함되어 있거나 다른 가져온 모듈에서 명시적으로 내보낸 프로바이더만 주입할 수 있습니다. 모듈에서 내보낸 프로바이더는 기본적으로 해당 모듈의 공용 인터페이스 또는 API 역할을 합니다.
CatsController는 CatsService밀접한 관련이 있으며 동일한 애플리케이션 도메인을 담당합니다. 따라서 이들을 기능 모듈로 그룹화하는 것이 좋습니다. 기능 모듈은 특정 기능과 관련된 코드를 구성하여 명확한 경계를 유지하고 더 나은 구성을 유지하는 데 도움이 됩니다. 이는 애플리케이션이나 팀이 성장함에 따라 특히 중요하며, SOLID 원칙과도 일치합니다.
CatsModule다음으로, 컨트롤러와 서비스를 그룹화하는 방법을 보여주기 위해 를 생성하겠습니다 .