역할: 다른 NestJS 모듈을 가져와 현재 모듈에서 사용할 수 있도록 한다.
사용 예시: 다양한 NestJS 내장 모듈이나 외부 모듈을 가져와서 기능을 확장하거나 재사용한다.
중요한 점: 모듈 간의 의존성을 관리하고 애플리케이션의 구조를 잘 나누는 데 중요하다. 예를 들어, HttpModule
, DatabaseModule
등을 imports
에 추가하여 HTTP 요청 처리나 데이터 베이스 연결 등을 모듈화할 수 있다.
역할: NestJS 애플리케이션에서 사용할 서비스나 인젝터블 객체를 정의한다.
사용 예시: 데이터베이스 서비스, 로깅 서비스, 외부 API 연동 서비스 등을 제공한다.
중요한 점 : 의존성 주입을 통해 컨트롤러나 다른 서비스에서 이용할 수 있다. 서비스는 NestJS의 핵심 요소이며, 애플리케이션의 비즈니스 로직을 구현하는 데 중요하다.
역할: HTTP 요청을 처리하고 클라이언트에 응답을 반환하는 메서드를 포함하는 클래스를 정의 한다.
사용 예시: 특정 URL 엔드포인트에서 발생하는 요청을 받아 처리하고, 데이터를 조회하거나 조작하는 로직을 구현한다.
중요한 점: 라우터 역할을 하며, 클라이언트와의 상호작용을 처리하는 부분이다. 각 컨트롤러는 특정 엔드포인트에 대해 어떤 동작을 수행할지 정의한다.
역할: 현재 모듈에서 정의한 것들 중 외부에서 사용할 수 있도록 공개할 항목을 지정한다.
사용 예시: 다른 모듈에서 현재 모듈의 서비스나 컨트롤러를 가져와 사용할 수 있게 한다.
중요한 점: 모듈을 재사용 가능한 단위로 만들 수 있으며, 다른 모듈과의 결합성을 관리하는 데 중요하다. 특히 외부에 제공해야 할 서비스나 컨트롤러가 있을 때 유용하다.
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 {}
imports
를 통해 다른 모듈에서 필요로 하는 기능을 제공하고, 이를 통해 코드의 재사용성을 높일 수 있다.exports
를 사용하여 다른 모듈에서 필요로 하는 기능을 제공하고, 이를 통해 코드의 재사용성을 높일수 있다.