NestJS에 대해서 알아보자

개요

철학

설치하기

3가지 방법이 있음

nest cli로 설치

기본값으로 타입스트립트 스타터를 설치함

$ npm i -g @nestjs/cli
$ nest new {프로젝트명}

자바스크립트를 사용하고 싶으면 다음과 같이하자

$ nest new -l Javascript {프로젝트명}

실행하면 패키지 매니저 뭐쓸지 물어봄. npm, yarn, pnpm 중에 물어보는데 원하는거 사용하시길

git clone 해서 설치

어째 보면 명확한듯

$ git clone https://github.com/nestjs/typescript-starter.git project
$ cd project
$ npm install
$ npm run start

자바스크립트 쓰고 싶으면 요걸쓰면 된다.

https://github.com/nestjs/javascript-starter

밑바닥부터 만들기

cli로 프로젝트를 만들면 필요없는 녀석들이 덕지덕지 붙는다. 깔끔한 설정을 원하는 사람은 다음과 같이하면 된다.

$ npm i --save @nestjs/core @nestjs/common rxjs reflect-metadata

개인적으로는 밑바닥 부터 만드는 것을 좋아한다.

실행하기

nest 명령으로 실행한 경우

$ npm run start

혹은

$ npm run start:dev

를 사용할 수 있다.

start:dev의 경우는 nodemon을 사용해서 파일이 변경될 때 마다 리프레시 해준다.

실행후 확인은 localhost:3000 에서 확인할 수 있다.

대충 이런거 나옴

NestJS는 쓸만할까?

NestJS의 목표는 어플리케이션을 제작할 때 필연적으로 생기는 모듈간의 의존성을 느슨하게 관리함으로써, 작은 프로젝트가 아닌 큰프로젝트에서도 잘 동작하는 웹서비스를 만드는 것이다. 이를 위해서 DI를 제공한다. 타입이 없는 언어의 경우 프로젝트가 커지게 되면, 소스를 수정할 때 대참사가 일어날 수 있는데, 이를 방지하기 위해서 타입스크립트를 완벽지원한다. DI를 사용함으로써 테스트도 쉽게 할 수 있고 코드간의 의존성도 느슨하게 관리 할 수 있다. express를 기본 엔진으로 쓰면서, 성능이 필요한 곳에는 fastify를 쓸 수 있는 것도 DI덕택이다. 내 생각으로는 혼자 만드는 간단한 프로젝트는 express를 계속 많이 사용하겠지만, 팀으로 작업하는 곳에서는 Nest를 도입하고자 하는 곳이 많아질 것으로 예상된다.나도 팀으로 작업을 한다면 express가 아니라 타입스크립트 완벽호환에 아키텍쳐를 안정적이고도 유연하게 가져갈 수 있는 NestJS를 선택할 것 같다.

npm trends에서 살펴보면 다운로드수는 express가 압도적으로 많다. 다만 nestjs를 다운로드하면 의존성 패키지에 express가 있으므로 다운로드 수로 앞지르는 일은 앞으로도 없을 것이다.

다만 nestjs 단독으로만 보면 꾸준하게 사용이 늘어나는 것을 볼 수 있다.

추가로 읽어보면 좋은 글

https://betterprogramming.pub/clean-node-js-architecture-with-nestjs-and-typescript-34b9398d790f