NEST

NestJS 모듈(Module) 시스템 이해하기

bonschicken 2024. 4. 3. 14:34
728x90

NestJS의 모듈 시스템은 애플리케이션의 구조를 정의하고, 애플리케이션의 다양한 부분을 조직화하는 데 중요한 역할을 합니다. 모듈은 @Module() 데코레이터로 주석이 달린 클래스로, Nest가 애플리케이션 구조를 구성할 때 사용하는 메타데이터를 제공합니다. 각 애플리케이션에는 적어도 하나 이상의 루트 모듈이 있으며, 이는 애플리케이션 그래프를 구성하는 시작점 역할을 합니다. 애플리케이션 그래프는 Nest가 모듈과 프로바이더 간의 관계 및 종속성을 연결하기 위해 사용하는 내부 데이터 구조입니다.

 

 

모듈의 주요 구성 요소

  • 프로바이더(Providers): Nest 인젝터(Injector)가 인스턴스화하고, 모듈 내에서 공유하는 프로바이더.
  • 컨트롤러(Controllers): 모듈 내에서 정의되고, 인스턴스화되어야 하는 컨트롤러의 집합.
  • 임포트(Imports): 해당 모듈에서 필요한 다른 모듈의 집합. 여기에 포함된 모듈은 프로바이더를 내보낼 수 있습니다.
  • 익스포트(Exports): 해당 모듈에서 제공하는 프로바이더의 부분 집합이며, 이 모듈을 가져오는 다른 모듈에서 사용할 수 있습니다.

 

모듈의 특징 및 장점

  • 캡슐화 및 재사용성: 모듈을 통해 관련된 기능을 하나의 단위로 묶어 캡슐화할 수 있으며, 이를 다른 애플리케이션 부분에서 재사용할 수 있습니다.
  • 애플리케이션 구조화: 모듈은 애플리케이션의 구조를 명확하게 정의하고, 유지보수 및 확장성을 향상시킵니다.
  • 의존성 관리: 모듈 시스템은 의존성 주입을 통해 애플리케이션의 다양한 부분 간의 종속성을 관리합니다.

 

동적 모듈(Dynamic Modules)

NestJS는 동적 모듈을 지원하여, 모듈을 더 유연하게 구성할 수 있게 합니다. 동적 모듈은 런타임에 모듈의 구성을 커스터마이징할 수 있게 해주며, 이를 통해 다양한 환경이나 조건에 따라 모듈의 동작을 변경할 수 있습니다.