$ npm i -g @nestjs/cli // Nestjs cli를 설치
$ nest new projectName // 프로젝트 생성
생성시 기본 구조
구조
app.controller.spec.ts : app.controller.ts 파일을 테스트하는 파일
app.controller.ts :
하나의 라우트가 있는 파일 (req, res 처리)
controller는 client의 요청에 대한 라우팅을 처리한다.
provider인 AppService에게 비즈니스 처리 요청을 보낸다.
서비스에서 받은 결과를 client에 응답으로 보낸다.
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();
}
}
app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [], // module 가져오기
controllers: [AppController], // 모듈에서 사용하는 컨트롤러의 세트
providers: [AppService], // NestJS의 injector에 의해 인스턴스화 되는 class
})
export class AppModule {} //모듈을 다른 모듈에서 사용하기 위함
app.service.ts :
라우트의 로직을 작성하는 파일
controller의 요청을 받은 서비스는 비즈니스 로직을 처리한 후 controller에게 return
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
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();
Express는 웹 서버를 빠르게 구현하기 위해 개발 시 구조에 대한 자유도가 높고
Express를 사용하면서 여러 툴, 기술, 미들웨어 등을 마음껏 선택할 수 있다.
nest.js는 구조가 있고 데이터베이스, ORM, 설정(Configuration), 유효성 검사 등 수많은 기능을 기본 제공하고 있다.