1. nest.js 모듈이란?
==> Nest.js에서 모듈은 애플리케이션을 구성하는 핵심 요소 중 하나. 모듈은 관련된 기능을 그룹화하고 재사용 가능한 코드를 캡슐화하는 데 사용. Nest.js는 모듈을 사용하여 애플리케이션을 컴파일하고 실행하며, 의존성 주입(Dependency Injection)을 통해 모듈 간의 상호작용을 관리한다.
- 기능의 분리: 애플리케이션을 작은 기능 단위로 분리하여 관리.
- 의존성 관리: 모듈은 자체적으로 필요한 의존성을 가질 수 있다. 다른 모듈에서 해당 모듈을 가져와 사용할 때, 의존성 주입을 통해 필요한 의존성을 제공받을 수 있다.
- 재사용성: 모듈은 다른 애플리케이션에서도 재사용될 수 있다. 이는 코드를 모듈로 캡슐화함으로써 발생. 따라서 비슷한 기능을 가진 다른 프로젝트에서 동일한 모듈을 사용할 수 있다.
- 가독성과 유지 보수성: 모듈은 코드를 논리적으로 그룹화하고 구조화하여 가독성을 향상. 또한 유사한 기능이나 관심사를 가진 코드를 쉽게 식별하고 유지 보수할 수 있도록 돕는다.
2. 모듈 구성
- @module() 데코레이터: Nest.js는 데코레이터를 이용하여 정의한다.
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class CatsModule {}
- Providers: 주로 클래스로 정의된다. service, repository, factory 및 기타 종속성 주입을 위한 객체를 나타낸다.
- Controller: HTTP 요청에 응답하여 클라이언트 에게 데이터를 제공하거나, 클라이언트의 요청을 처리하는 역할을 한다. Nest.js에서 Controller는 주로 클래스로 정의되고 @Controller() 데코레이터를 사용하여 정의된다.
- External Modules(외부 모듈): 외부 라이브러리와의 통합을 지원하기 위해 외부 모듈을 사용할 수 있다.
@Module({
imports: [CommonModule],
exports: [CommonModule],
})
export class CoreModule {}
- Injector(인젝터): Nest.js의 의존성 주입(Dependency Injection) 시스템 모듈을 통해 구현된다.
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class CatsModule {
constructor(private catsService: CatsService) {}
}
- Global Modules(글로벌 모듈): 애플리케이션의 루트 모듈에 등록되는데 이를 글로벌 모듈이라고 한다.
import { Module, Global } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Global()
@Module({
controllers: [CatsController],
providers: [CatsService],
exports: [CatsService],
})
export class CatsModule {}
'JavaScript Dev. > Nest.js' 카테고리의 다른 글
Nest.js - Provider (0) | 2024.02.28 |
---|---|
Nest.js - Controller (0) | 2024.02.28 |
Nest.js 설치부터 기본 개념까지 (1) | 2024.02.06 |
Nest.js와 OOP(객체지향 프로그래밍) (0) | 2024.01.14 |
Nest.js를 이용한 refresh token 구현하기 (0) | 2023.11.16 |