NestJS
효율적이고 확장 가능한 NodeJS 기반 서버사이드 애플리케이션 구축을 위한 프레임워크
NodeJS 기반으로 Javascript v8 엔진에서 구동되는 웹 앱 프레임워크로 express나 fastify 같은 다른 nodeJS 프레임워크를 래핑하여 동작한다
Angular의 영향을 많이 받았으며 Module / Component 기반으로 프로그램을 작성하기 때문에 재사용성이 높고,
함수형 프로그래밍을 지향하며 기본 언어로 타입스크립트를 지원하고 있어, 효율적이고 유연한 웹 애플리케이션을 만들 수 있다
장점
최신 ECMA script 지원
CORS (Cross-Origin Resource Sharing), HTTP 헤더 지원
인터셉터, 미들웨어, 로깅, 테스팅, 스웨거 등을 자체적으로 지원
ORM (Object Relation Model) 지원으로 DB와 연동 가능
스케줄링, 이벤트 핸들링, 마이크로 서비스와 같은 고급 기능도 지원
MVC, DDD 등 여러 디자인 아키텍처에 맞는 유연한 개발 가능
공식 문서가 친절함
단점
과도한 유연함으로 SW의 품질의 일관성을 해칠 수 있음
개발에 맞는 라이브러리를 찾는데 오래 걸릴 수 있다
express 보다 무겁고 커뮤니티가 적다
설치
프로젝트 구조 (NestJS 초기화 이후 자동으로 생성됨)
src
|__app.controller.spec.ts // 컨트롤러에 대한 테스트
|__app.controller.ts // 기본 컨트롤러
|__app.module.ts // 루트 모듈
|__app.service.ts // 기본 서비스
|__main.ts // Nest 인스턴스 생성 파일. 부트스트랩이 위치
NestJS의 구조
Controller
클라이언트 사이드로 들어오는 요청을 Provider로 위임
Provider
비즈니스 로직
DTO (Data Transfer Object)
프로세스 간 전달하는 데이터 (https://2mukee.tistory.com/891)
Module
컨트롤러, 서비스, DTO 등을 하나로 묶은 개념
- providers (NestJS Injector에 의해 모듈 내에 공유 될 provider 목록)
- controllers (컨트롤러 목록)
- imports (이 모듈에 필요한 provider가 사용할 외부 모듈 목록)
- exports (이 모듈에서 제공하고 이 모듈을 import하는 다른 모듈에서 사용할 수 있는 provider 목록)
Reference
'Programming > NestJS' 카테고리의 다른 글
nestJS provider TypeError: Cannot read properties of undefined (reading 'get') (0) | 2024.08.17 |
---|---|
DTO와 Type의 차이 (0) | 2024.07.19 |
NestJS 모듈 순환 참조 (0) | 2024.07.19 |
NestJS ApiProperty 및 ApiQuery 데코레이터 (0) | 2024.07.19 |
DTO (Data Transfer Object, 데이터 전송 객체)에 대해 알아보자 (0) | 2024.04.27 |