본문 바로가기

NestJS

Chapter1 - 구조 살펴보기

안녕하세요 개발자 정씨입니다.

최근 ExpressJS 프레임워크 만큼이나 NestJS 프레임워크가 주목 받고 있습니다.

해당 카테고리는 NestJS를 공부하며 알게된 내용을 정리하고자합니다.

 

1. 설치

  • 공식 docs(https://docs.nestjs.com)를 참조하여 다음과 같은 명령어로 설치 및 프로젝트를 생성할 수 있습니다.
npm i -g @nestjs/cli
nest new project-name

 

 

  • 아래와 같이 어떤 package manager를 사용할지 선택하라는 내용의 메세지가 나옵니다. 저는 npm으로 진행해보겠습니다.

 

  • 프로젝트 생성이 완료되면 아래와 같은 창을 확인하실 수 있습니다.

 

  • 생성된 프로젝트로 이동하여 "npm start"명령어를 입력하여 서버를 띄우고 "localhost:3000"으로 이동하면 아래와 같은 화면을 확인 할 수 있습니다. 

 

2. 프로젝트 구조 

  • 프로젝트를 열어보면 src에 아래와 같은 파일들을 확인 할 수 있는데, 각각의 파일들은 다음과 같은 역할을 수행합니다.

 main.ts  이 파일은 Nest.js 애플리케이션의 시작점입니다. 여기에서 서버를 설정하고 실행합니다.
 app.module.ts  애플리케이션의 구성 요소를 그룹화하고, 의존성 주입을 관리합니다.
 app.controller.ts  클라이언트의 요청을 처리하고 응답을 생성하는 역할을 합니다.
 app.service.ts  데이터베이스와 통신하거나 다른 비즈니스 로직을 처리합니다.

 

  • 실제로 controller와 service파일을 살펴보면, service에서 비지니스 로직을 처리하고, 이를 기반으로 controller에서 응답해주는 방식으로 이루어져 있습니다.

 

  • 현재 get 방식으로 통신이 가능한데, 아래와 같이 코드를 작성한다면, 다른 방식으로도 통신이 가능합니다.

* 해당코드가 실제로 data를 업데이트하진 않습니다. 일종의 예시로 작성된 코드입니다.

 

3. nestjs-cli

  • nestjs의 또 하나의 장점이라고 한다면 cli를 통해 프로젝트의 아키텍처를 쉽게 구성 할 수 있다는 점 입니다.
  • "nest -h"라는 명령어를 입력하면, 사용할 수 있는 명령어들을 볼 수 있습니다.

 

  • 위의 화면에서도 알 수 있듯 cli 명령어를 통해서 원하는 파일을 생성할 수 있습니다.
nest generate [생성할파일] [이름]

 

4. TypeScript 특징 - build

  • NestJS의 구성언어인 TypeScript 특징 중 하나라면 빌드 과정이 있는데, 이는 TypeScript 코드를 JavaScript로 변환하고, 필요한 리소스를 번들링하여 프로덕션 환경에서 실행 가능한 형태로 만드는 과정입니다.
  • 이 과정을 통해 TypeScript로 개발한 코드를 최적화하고 오류를 사전에 발견할 수 있으며, 애플리케이션의 성능을 향상시키고 배포를 간편하게 할 수 있는 장점이 있습니다.
  • NestJS 프로젝트 생성시 자동으로 만들어진 package.json을 보면 script에 다양한 명령어가 존재합니다. 실제로 build 명령어를 확인 할 수 있으며, nest start 명령어에는 build과정이 포함되어 있습니다.
  • build 과정을 마치고 나면 dist 디렉토리가 생성된 것을 볼 수 있는데, 이 dist가 변환된 JavaScript 결과 입니다.

 

  • build여부에 따른 차이점을 나름대로 정리해보았습니다.
 [build X]
  - ts-node를 사용하여 TypeScript 코드를 런타임에서 직접 실행합니다. 
  - 따라서 TypeScript 파일(.ts)을 직접 실행하므로 빌드 과정 없이 코드를 수정하고 서버를 다시 시작할 수 있습니다.
  - 일반적으로 이 방식으로 개발 환경에서 코드를 빠르게 테스트하고 디버깅할 때 사용합니다.

 [build O]
  - 빌드된 JavaScript 코드(.js)를 실행합니다. 
  - 미리 컴파일된 코드를 실행하므로 런타임에서 TypeScript를 처리하지 않습니다.
  - 일반적으로 이 방식으로 배포 및 프로덕션 환경에서 사용합니다.

 

'NestJS' 카테고리의 다른 글

Chapter3 - DB 연결(TypeORM)  (0) 2023.12.08
Chapter2 - Module 구성  (0) 2023.12.07