서버/Nest

NestJS

realtrynna 2022. 11. 19. 21:38

NestJS

NodeJS에 Decorator와 Reflection 기능을 기반으로 작동하는 서버 사이드 프레임워크다.

IoC, DI를 채용한 객체 지향 프로그래밍으로 프로젝트 유지 보수성이 뛰어나며 모듈과 컴포넌트 기반의 코드 작성으로 재사용성과 복잡한 프로젝트 폴더 관리에 용이하다. 타입스크립트가 기본 언어지만 바벨을 사용해 자바스크립트로 작성 가능하다. 

 

내부적으로 Express 또는 Fastify 프레임워크를 Rapping 한다. 기본적으로 Express를 사용하는데 이는 범용적 측면과 미들웨어 호환성을 고려한 이유다.

 

 

Express와 Nest

Express는 미니멀 리스트다. Nest와 다르게 웹 프레임워크가 기본적으로 제공해야 할 대부분의 기능을 사용자가 직접 구현해야 한다.

 

장점으로는 특정 아키텍처를 요구하지 않고 타 프레임워크에 비해 단순성이 높아 비교적 진입장벽이 낮다. 또한 높은 자유도로 단기간에 애플리케이션 아이디어 검증이 가능하다.

 

단점으로 높은 자유도로 인해 애플리케이션 품질이 일정하지 않을 수 있고 아키텍처 선정과 커뮤니케이션 비용이 증가할 수 있다. 팀 또는 사람마다 아키텍처가 천차만별이고 마개조가 가능해 대규모 프로젝트 팀 단위 협업 시 적합하지 않을 수 있다.

 

  Express Nest
소개 높은 자유도의 미니멀 리스트 프레임워크 효율적인 상업용 애플리케이션 구조를 추구하는 프레임워크
라우터 라우터 함수 또는 미들웨어 사용 @Controller 데코레이터 사용
의존성 주입(DI) 별도 라이브러리 사용
(Inversify, TypeDI, TSyringe 등)
내부적으로 제공
에러 핸들링 직접 구현 @Catch 데코레이터 사용
테스트 별도 라이브러리 사용
(Jest, Mocha 등)
Jest를 기반으로 내장 테스팅 모듈 제공
아키텍처 별도 요구 X Module, Controller, Provider

 

 

미들웨어 비교

Express Nest(데코레이터)
req(Request 객체) @Request(), @Req()
res(Response 객체) @Response(), @Res()
next @Next()
req.session @Session()
req.params, req.params[key] @Param(key?)
req.body, req.body[key] @Body(Key?)
req.query, req.query[key] @Query(key?)
req.headers, req.headers[name] @Headers(name)
req.ip @Ip()
req.hosts @HostParam()

 

 

참조

https://assu10.github.io/dev/2023/02/01/nestjs/
https://goldenrabbit.co.kr/2023/06/05/nestjs/
https://nemne.tistory.com/26

 

'서버 > Nest' 카테고리의 다른 글

NestJS Module  (0) 2022.12.12
NestJS Controller Versioning  (0) 2022.12.06