반응형

이 글은 동영상 강의로 제공됩니다.

https://youtu.be/qmthF-dq3Ak

 

NestJS의 Module 개념

  • NestJS는 여러 모듈들의 집합입니다.
  • NestJS는 하나 이상의 모듈이 반드시 있어야 합니다.
  • 기본 모듈은 AppModule입니다.
  • 기능별로 모듈을 생성하여 개발할 수 있습니다.
  • 생성된 각 모듈을 Root Module에 imports 시켜주어야 합니다.(하위모듈의 하위모듈...)
  • CLI로 모듈을 생성하면 자동으로 Root Module에 import가 됩니다.
  • export를 통해 외부에서 module을 사용할 수 있습니다.

 

NestJS CLI로 생성된 소스를 자세히 살펴보겠습니다.

main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();
  • main.ts는 Application의 진입점(Entry Point)입니다.
  • main.ts에서는 NestFactory를 사용하여 Application 인스턴스를 생성합니다.
  • 생성시에는 AppModule을 사용하도록 지정을 했습니다.

 

app.module.ts

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

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
  • AppModule은 main.ts에서 지정한 root module입니다.
  • NestJS는 모듈 단위로 개발을 진행합니다.
  • module은 @Module 데코레이터를 사용하여 선언합니다.
  • imports는 다른 module을 가져올때 사용합니다.
  • controllers는 이 모듈에서 사용하는 컨트롤러의 세트입니다.
  • providers는 NestJS의 injector에 의해 인스턴스화 되는 class를 지정합니다.
  • export를 통해 모듈을 다른 곳에서 사용할 수 있습니다.

 

app.controller.ts

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();
  }
}
  • controller는 client의 요청에 대한 라우팅을 처리합니다.
  • provider인 AppService에게 비즈니스 처리 요청을 보냅니다.
  • 서비스에서 받은 결과를 client에 응답으로 보냅니다.

app.service.ts

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}
  • controller의 요청을 받은 서비스는 비즈니스 로직을 처리한 후 controller에게 return합니다.

 

이상으로 NestJS의 구조에 대해 살펴보았습니다.

반응형

+ Recent posts