반응형
이 글은 동영상 강의로 제공됩니다.
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의 구조에 대해 살펴보았습니다.
반응형
'Nestjs 기초 동영상강좌' 카테고리의 다른 글
NestJS - 09. 회원가입 (2) | 2022.01.22 |
---|---|
NestJS - 08.TypeORM으로 MySQL Data 처리하기 (0) | 2022.01.15 |
NestJS - 07.미들웨어(Middleware) (0) | 2022.01.02 |
NestJS - 06.서비스 만들기 (프로바이더) (0) | 2021.12.24 |
NestJS - 05.컨트롤러 만들기 (0) | 2021.12.20 |
NestJS - 04.소스 자동 생성기 (0) | 2021.12.18 |
NestJS - 02.NestJS설치 및 프로젝트생성 (0) | 2021.12.11 |
NestJS - 01.NestJS란? (0) | 2021.12.11 |