반응형
    
    
    
  이 글은 동영상 강의로 제공됩니다.
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 |