Written by
Nostrss
on
on
[Nest.js] - 소개
Nest.js 공식 문서를 참고하였습니다.
Nest.js란?
- Node.js 서버 측 애플리케이션을 구축하기 위한 프레임 워크
특징
Angular
와 비슷한 구조이며 이에 영감을 받은 것으로 알려져 있습니다.Typescript
를 기본 언어로 사용합니다.Express
를 기본값으로 사용하며Fastify
도 사용할 수 있습니다.- 객체지향 개념을 도입하였습니다.
장점
Angular와 비슷한 구조
- 모듈/컴포넌트 기반으로 프로그램을 작성함으로써 재사용성을 높여줍니다.
프론트 엔드를 먼저 시작한 나로서는 모듈기반이라는 말이 잘 와닿지 않았다.
Express의 단점을 보완
-
expresss는 훌륭한 프레임워크이지만, 과도한 유연함으로 인해 SW의 품질이 일정하지 않고 알맞은 라이브러리를 찾기 위해 사용자가 많은 시간을 할애해야 합니다.
-
하지만 Nest.js는 데이터베이스, ORM, 설정(Configuration), 유효성 검사 등 수많은 기능을 기본 제공하고 있다. 그러면서도 필요한 라이브러리를 쉽게 설치하여 기능을 확장할 수 있는 Node.js 장점은 그대로 가지고 있다고 한다.
즉, Express는 React, Nest.js는 Next.js, Nuxt.js와 같은 프론트엔드 프레임워크와 비슷한 역할을 한다고 이해하면 될 것 같다.
설치 및 설정
아래 2개의 명령어를 터미널에서 실행하여 설치와 새 프로젝트를 설정 할 수 있다.
npm i -g @nestjs/cli
nest new project-name
핵심 파일
설치를 완료하면 src 폴더에 아래와 같은 파일들이 생성된다.
app.controller.ts |
클라이언트로 부터 들어오는 요청을 service 애 위임하고 처리된 결과를 다시 클라이언트에게 반환하는 일을 담당한다. HTTP 요청 메서드(GET, POST 등)를 정의한다. |
app.controller.spec.ts |
컨트롤러에 대한 단위 테스트 파일 이다. |
app.module.ts |
애플리케이션의 루트 모듈. Nest.js에서는 모듈을 사용하여 애플리케이션을 구성한다. 모듈은 기능과 비즈니스 로직을 담당하는 컴포넌트의 집합이라 할 수 있다. |
app.service.ts |
controller 로부터 위임받은 요청을 실제로 처리하고 반환하는 역할을 한다. 즉,비즈니스 로직을 구현하는 역할이라고 볼 수 있다. |
main.ts |
Nest.js의 진입점, NestFactory핵심 기능을 사용하여 Nest 애플리케이션 인스턴스를 생성하는 애플리케이션의 항목 파일이다. HTTP 서버를 시작하는 역할을 한다. |
실행
npm run start
npm run start:dev // 개발 모드