Nest.js는 Node.js 위에서 동작하는 프레임워크로, 효과적이고 확장 가능한 서버 사이드 애플리케이션을 구축하기 위해 제공된다. Nest.js를 사용할 때의 장점은 다음과 같다.
모듈화와 확장성: Nest.js는 모듈 기반의 아키텍처를 사용하여 애플리케이션의 각 부분을 분리할 수 있다. 이로 인해 재사용성과 확장성이 향상된다.
강력한 Dependency Injection (DI): Nest.js는 Angular에서 영감을 받아 Dependency Injection 시스템을 제공한다. DI를 사용하면 애플리케이션의 다양한 부분을 더 쉽게 테스트하고 재사용할 수 있다.
데코레이터 기반: Nest.js는 TypeScript의 데코레이터를 광범위하게 사용하여 코드의 의도를 명확하게 표현하며, 개발자들이 개발 과정에서 추가적인 메타데이터를 쉽게 제공할 수 있게 한다.
테스트 용이성: Nest.js는 테스트를 쉽게 작성하고 실행할 수 있는 기능을 제공한다. 이는 백엔드 서비스의 품질을 보장하는 데 중요하다.
다양한 미들웨어 지원: Nest.js는 Express.js와 같은 다양한 미들웨어를 지원하여, 개발자가 기존에 익숙한 라이브러리나 플러그인을 사용할 수 있게 해준다.
다양한 WebSocket 라이브러리와의 통합: Nest.js는 웹소켓 기반의 기능을 쉽게 구현할 수 있도록 도와준다.
미리 정의된 프로젝트 구조: 프로젝트의 일관성과 유지보수성을 향상시키기 위해 Nest.js는 미리 정의된 프로젝트 구조를 제공한다.
다양한 Database 연동: Nest.js는 TypeORM, Sequelize, Mongoose 등과 같은 다양한 ORM 및 데이터베이스 라이브러리와 쉽게 연동된다.
모던한 JavaScript 및 TypeScript 지원: Nest.js는 모던한 JavaScript와 TypeScript의 기능들을 최대한 활용하며, 개발자에게 타입 안전성과 코드의 명확성을 제공한다.
풍부한 플러그인 및 확장 모듈: Nest.js 커뮤니티는 많은 추가 모듈과 플러그인을 제공하여, 다양한 기능을 쉽게 통합할 수 있다.
Nest.js를 시작하려면 Nest CLI를 사용하여 프로젝트를 시작할 수 있다.
$ npm i -g @nestjs/cli
$ nest new project-name
$ npx @nestjs/cli new project-name
프로젝트를 생성하면 디렉토리 project-name가 생성되고, src폴더에 핵심 파일들이 채워집니다.
/src
app.controller.spec.ts
app.controller.ts
app.module.ts
app.service.ts
main.ts
핵심 파일들에 대한 간략한 개요는 다음과 같다.
Nest.js를 시작했을 때 만들어지는 핵심 파일들에 대해 간략하게 정리해봤다. 데코레이터, NestFactory에 대한 내용은 처음 들어보기에 추가로 공부해야할 것 같다.