NestJS 모듈 구성 요소

SEUNGJUN·2024년 6월 22일
0

NestJS

목록 보기
2/8
post-custom-banner

1. NestJS 모듈 구성 요소

imports

  • 역할: 다른 NestJS 모듈을 가져와 현재 모듈에서 사용할 수 있도록 한다.

  • 사용 예시: 다양한 NestJS 내장 모듈이나 외부 모듈을 가져와서 기능을 확장하거나 재사용한다.

  • 중요한 점: 모듈 간의 의존성을 관리하고 애플리케이션의 구조를 잘 나누는 데 중요하다. 예를 들어, HttpModule, DatabaseModule 등을 imports에 추가하여 HTTP 요청 처리나 데이터 베이스 연결 등을 모듈화할 수 있다.

providers

  • 역할: NestJS 애플리케이션에서 사용할 서비스나 인젝터블 객체를 정의한다.

  • 사용 예시: 데이터베이스 서비스, 로깅 서비스, 외부 API 연동 서비스 등을 제공한다.

  • 중요한 점 : 의존성 주입을 통해 컨트롤러나 다른 서비스에서 이용할 수 있다. 서비스는 NestJS의 핵심 요소이며, 애플리케이션의 비즈니스 로직을 구현하는 데 중요하다.

controllers

  • 역할: HTTP 요청을 처리하고 클라이언트에 응답을 반환하는 메서드를 포함하는 클래스를 정의 한다.

  • 사용 예시: 특정 URL 엔드포인트에서 발생하는 요청을 받아 처리하고, 데이터를 조회하거나 조작하는 로직을 구현한다.

  • 중요한 점: 라우터 역할을 하며, 클라이언트와의 상호작용을 처리하는 부분이다. 각 컨트롤러는 특정 엔드포인트에 대해 어떤 동작을 수행할지 정의한다.

exports

  • 역할: 현재 모듈에서 정의한 것들 중 외부에서 사용할 수 있도록 공개할 항목을 지정한다.

  • 사용 예시: 다른 모듈에서 현재 모듈의 서비스나 컨트롤러를 가져와 사용할 수 있게 한다.

  • 중요한 점: 모듈을 재사용 가능한 단위로 만들 수 있으며, 다른 모듈과의 결합성을 관리하는 데 중요하다. 특히 외부에 제공해야 할 서비스나 컨트롤러가 있을 때 유용하다.

import { Module } from '@nestjs/common';
import { DatabaseModule } from './database.module';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';

@Module({
  imports: [DatabaseModule], // 다른 모듈 가져오기
  providers: [UsersService], // 서비스 정의
  controllers: [UsersController], // 컨트롤러 정의
  exports: [UsersService], // 외부에 제공할 항목 지정
})
export class SampleModule {}

주요 특징과 이점

1. 모듈화

  • 각 기능이나 역할에 따라 모듈을 나누어 관리함으로써 코드의 구조화와 유지보수성을 높인다.

2. 의존성 관리

  • imports를 통해 다른 모듈에서 필요로 하는 기능을 제공하고, 이를 통해 코드의 재사용성을 높일 수 있다.

3. 코드 재사용성

  • exports를 사용하여 다른 모듈에서 필요로 하는 기능을 제공하고, 이를 통해 코드의 재사용성을 높일수 있다.

4. 구조화된 애플리케이션 설계

  • NestJS에서는 이러한 모듈 패턴을 통해 애플리케이션을 구성함으로써 기능적으로 관련된 부분들을 적절히 분리하고 관리할
profile
RECORD DEVELOPER
post-custom-banner

0개의 댓글