(주로 Reference 글들을 번역/요약하는 방식으로 작성되었습니다)
ExpressJS 대신 NestJS를 사용하는 이유
ExpressJS
는 un-opinionated, minimalistic framework로써, 개발자가 올바른 선택을 할 것이라 믿고 맡긴다. 개발자는 자신이 원하는 tools, technologies, middleware 등을 선택하여 적용할 수 있다. 또 Framework에서 강제하는 구조또한 없다. 이는 개인으로 작업할 때는 높은 자유도를 보장해주지만, 팀으로 작업할 때는 의견충돌을 야기할 수 있으며, 큰 프로젝트에 참여하는 경우 각각의 micro-service team들의 project structure와 tool이 달라 다른 팀으로의 이동을 힘들게 한다.
NestJS
는 highly opinionated framework이다. 따라서 NestJS는 개발자들이 특정 tool을 사용하고 특정한 방식으로 코드를 작성하도록 가이드한다. 그리고 이미 controller를 try-catch block으로 감싸놓고, request body를 parse하고, error handler, middleware 등을 이미 다 추가해놓았기때문에 매번 새 프로젝트를 시작할때마다 같은 작업을 반복하지 않아도 된다.
추가적으로 아래와 같은 장점이 있다.
- Typescript by default
- CLI tooling
- TypeORM support
- Microservices (built-in support for GraphQL, WebSockets, gRPC, MQTT, etc)
- Ease of testing
p.s. NestJS는 Express를 base로 사용한다고 한다.
Reference:
https://medium.com/monstar-lab-bangladesh-engineering/why-i-choose-nestjs-over-other-node-js-frameworks-6cdbd083ae67
https://codeburst.io/why-you-should-use-nestjs-for-your-next-project-6a0f6c993be