nuyeo / NestJsBasic

따라하며 배우는 NestJS
7 stars 0 forks source link

NestJS 구조 정리 #3

Open kakasoo opened 10 months ago

kakasoo commented 10 months ago

이것 또한 먼저 시작하신 분이 있습니다. 앞의 분을 보고 배우되 자기가 이해한 그대로의 언어로 작성해주세요. 각각이 어떤 구조인지 심층적으로 파고들 게 아니라면 일단 역할에 대한 이해가 자기 언어로 설명하는 게 낫습니다.

nuyeo commented 10 months ago

📂NestJS 폴더 구조

src ├── main.ts ├── app.module.ts ├── app.controller.ts ├── app.service.ts ├── modules │ ├── module1 │ │ ├── module1.module.ts │ │ ├── module1.controller.ts │ │ ├── module1.service.ts │ │ └── ... │ ├── module2 │ │ ├── module2.module.ts │ │ ├── module2.controller.ts │ │ ├── module2.service.ts │ │ └── ... │ └── ... └── ... NestJS는 모듈화, 의존성 주입을 강조하여 애플리케이션의 확장성과 유지보수성을 향상시킨다. 의존성 주입 (Dependency Injection) : 의존 관계를 외부에서 결정. 런타임 시점의 의존 관계를 외부에서 주입.

⚙️Module

@Module() 데코레이터가 달린 클래스

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

⚙️Controller

클라이언트의 request를 처리하고, response를 반환

import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

⚙️Provider

의존성을 주입할 수 있는 Nest의 기본 개념

⚙️Pipe

@Injectable() 데코레이터로 선언.

⚙️DTO

Data Transfer Object. 계층 간 데이터 전송을 위해 도메인 모델 대신 사용되는 객체

⚙️Middleware

클라이언트로부터 들어온 요청을 각 컨트롤러의 핸들러가 처리하기 전 코드를 실행할 수 있는 기능

kakasoo commented 10 months ago

폴더 구조를 이렇게 레이어 (계층) 단위로 나눌 수도 있습니다!