Nest JS 설치

필수 요소

  • NodeJS 16 이상
  • TypeScript

npm i -g @nestjs/cli
nest new project-name

nest로 새로운 프로젝트를 생성하게 된다면 아래와 같은 폴더 구조를 갖게 됩니다.
!Pasted image 20240620104626.png

app.controller.ts

app.controller.spec.ts

app.module.ts

app.service.ts

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();

NestJS

NestJS의 장점

NestJS는 NodeJS에 기반을 둔 웹 API 프레임 워크로 Express 또는 Fastify 프레임워크로 래핑하여 작동합니다.

NestJS는 기본 설치 시에 ExpressJS 를 사용합니다.
ExpressJS

  • NodeJS는 뛰어난 확장성을 가진 반면에,
  • 과도한 유연함으로 인해 결과물 소프트웨어 품질이 일정하지 않고 알맞은 라이브러리를 찾기 위해 사용자가 많은 시간을 할애해야 합니다.

NestJS는 앵귤러로부터 영향을 많이 받았습니다.

모듈/컴포넌트 기반으로 프로그램을 작성함으로써 재 사용성을 높입니다.

  • 제어 반전(inversion of control, IOC)
  • 의존성 주입(dependency injection, DI)
  • 관점 지향 프로그래밍(aspect-oriented programming, AOP)

프로그래밍 언어는 타입 스크립트를 기본으로 채택하여, TypeScript가 가진 Type System의 장점을 누릴 수 있습니다.

웹 프레임워크가 갖춰야 할 필수 기능이라면 다음과 같은 것들이 있습니다.

필수 기능

  • 최신 ECMA Script 지원
  • TypeScript
  • CQRS(command query responsibilty separation)
  • HTTP Header 보안 (Express는 helmet을 사용)
  • 편리한 설정
  • 인터셉터 (interceptor)
  • 다양한 미들웨어 (middleware)
  • 스케줄링
  • 로깅
  • 테스팅
  • swagger 문서화
  • ORM

Express ? Nest?

구분 Express NestJS
유연함 / 확장성 Express는 가볍게 테스트용 서버를 띄울수 있습니다.
아이디어를 빠르게 검증하는 데에는 좋지만,
단순하고 자유도가 높은 만큼 자기에게 맞는 라이브러리를 찾기 위해 발품을 팔아야 합니다.
보일러 플레이트를 미리 얹어놓은 github repo가 있으니, 이를 활용해도 좋습니다.
middleware, IoC, CQRS등 이미 많은 기능을 프레임 워크 자체에 포함합니다.
사용자는 문서를 보고 쉽게 따라 할 수 있습니다.
원하는 기능이 없다면 다른 라이브러리를 적용해서 사용하면 됩니다.
TypeScript 지원 추가 설정을 통해 사용 가능합니다. 기본 설정입니다.
바닐라 JS로도 작성 가능합니다
커뮤니티 가장 큽니다. 꾸준이 증가하고 있습니다.

#Nest #NodeJS #Back