프레임워크/Nest.js

Nest.js 소개

Jake Seo 2024. 1. 6. 16:57

Nest.js 소개

  • Node.js 로 만듦
  • 차세대 Typescript 를 이용
  • HTTP 서버 프레임워크인 Express 를 사용, Fastify 로도 사용 가능
    • 공식 문서에서는 모든 노드 HTTP 프레임워크에서 작동한다고 한다.
    • 기본은 @nestjs/platform-express
  • 아키텍처 설계 문제를 해결하기 위해 나옴
  • 서버 아키텍처 때문에 테스트하기 쉽고, 디커플링 잘되고, 유지보수 편함
  • 결국 Express + 아키텍처

초기 파일 구성

아래 디렉토리 구성은 각 모듈을 전용 디렉토리에 저장하는 관례를 따르기 위해 초기에 잡힌다.

  • src 디렉토리 내부
    • main.ts: 엔트리 파일 역할. 코어 함수인 NestFactory 를 사용하여 Nest Application Instance 를 만듦
    • app.service.ts: 하나의 메서드가 있는 기본 서비스
    • app.module.ts: 애플리케이션의 루트 모듈, 의존성을 관리하는 파일.
    • app.controller.ts: 하나의 라우트가 들어있는 기본 컨트롤러
    • app.controller.spec.ts: 컨트롤러에 대한 유닛 테스트들
  • test 디렉토리 내부
    • jest-2e2.json
    • app.e2e-spec.ts

main.ts 살펴보기

  • create() 메서드는 INestApplication 인터페이스를 충족하는 애플리케이션 오브젝트를 만든다.
  • 앱을 만들다 오류가 발생하면 앱은 코드 1과 함께 종료된다. 오류를 발생시키고 싶으면 abortOnError 옵션을 활성화해야 한다.
    • NestFactory.create(AppModule, { abortOnError: false })
import { NestFactory } from "@nestjs/core";
import { AppModule } from "./app.module";

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}

bootstrap();

앱 시작 방법

  • 기본적으론 npm run start 명령어로 실행할 수 있다.
  • 개발 프로세스 속도를 높이려면 npm run start -- -b swc 명령어로 실행하면 SWC builder 를 사용하여 더 빨라진다고 한다.

린팅과 포맷팅 (Linting and Formatting)

  • Nest.js 는 기본 eslintprettier 패키지를 사용한다.
  • 아래 명령어를 통해서 실행 가능하다.
# Lint and autofix with eslint
$ npm run lint

# Format with prettier
$ npm run format

공식문서

https://docs.nestjs.com/

반응형