IT/NestJS

[NestJS] NestJS 설치부터 기본 개념 알아보자

2023. 8. 7. 21:36
오늘의 명언

“ 훌륭한 기계공은 일반 기계공보다 몇배의 급여를 더 높이 받는다. 그러나 훌륭한 코드를 만들어내는 개발자는 일반적인 개발자보다 1만배 이상의 가치가 있다. ”

- Bill Gates (빌 게이츠)
목차
  1. [NestJS] 프로젝트 설치
  2. 1. 프로젝트 구조
  3. [NestJS] Module - Controller - Service 아키텍쳐
  4. 1. Module 모듈
  5. 2. Controller 컨트롤러
  6. 3. Service 서비스
  7. 4. 생성된 파일
  8. [NestJS] 실행하기
300x250

NestJS는 모듈화와 의존성 주입을 통해 구조적으로 정리된 백엔드 애플리케이션을 구축하기 위한 현대적인 프레임워크입니다. TypeScript를 기반으로 하여 강력한 기능을 제공하며, Express와 비슷한 런타임을 사용합니다. 

 

또한, NestJS는 Fastify 프레임워크를 래핑하여 동작할 수도 있어 뛰어난 성능을 유지하면서도 개발 생산성을 높일 수 있습니다. NestJS는 국내외에서 빠르게 인기를 얻고 있으며, 다양한 회사에서 프로젝트에 적용하고 있는 추세입니다. 

이에 따라 저 또한 NestJS에 대해 공부하고, 기본 개념부터 천천히 탐구해보려 합니다. 

 

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea

docs.nestjs.com

 

[NestJS] 프로젝트 설치

Nest CLI 명령어를 실행하면 새 프로젝트 디렉토리가 생성되며, Nest 프로젝트 기본 구조가 생성됩니다.

처음 사용하는 사용자는 Nest CLI 명령어로 프로젝트를 시작하는것이 좋습니다.

 

Info

Node.js 버전 16이상이 설치되어 있어야 합니다.

 


    
npm i -g @nestjs/cli
nest new project-name

 

 

1. 프로젝트 구조

Nest CLI 명령어로 프로젝트를 생성하면 아래와 같이 기본 구조가 생성됩니다.

  • main.ts : 애플리케이션 진입점, NestJS 애플리케이션을 생성하면 이 파일에서 초기화하고 실행합니다.
  • app.controller.ts : 컨트롤러 파일입니다. 각 컨트롤러는 요청을 받아 처리하고 응답을 반환합니다.
  • app.module.ts : 모듈 파일입니다. 기능 별로 모듈을 생성 관리 할수 있습니다.
  • app.service.ts : 서비스 파일입니다. 비즈니스 로직을 처리하며, 컨트롤러에서 사용됩니다.
  • nest-cli.json : Nest 프로젝트에 특정한 설정을 할수있는 json 파일
  • test 폴더 : 테스트 관련 파일들이 위치하는 폴더 입니다. 단위 테스트 및 통합 테스트를 작성할수있습니다.

Nest 기본 구조

 


[NestJS] Module - Controller - Service 아키텍쳐

NestJS는 Module - Controller - Service 아키텍쳐 패턴을 기반으로 Angular 프레임워크의 영향을 받아서 개발이 되었습니다.  

Info

--no-spec 명령어를 포함하여 spec 파일을 생성하지 않습니다.  

 

nest cli

1. Module 모듈

Info

Module은 애플리케이션의 구성 단위로, 관련된 Controller와 Service등을 그룹화 합니다.
루트 경로에서 명령어로 boards 모듈 파일을 생성합니다.


    
nest g module boards //모듈 생성
// or
nest g mo boards

 

2. Controller 컨트롤러

Info

Controller는 클라이언트의 요청을 처리하고 응답을 반환하는 역할을 합니다. Express에서 Router 부분 이라고 생각하시면 됩니다. 루트 경로에서 명령어로 board 컨트롤러 파일을 생성합니다.


    
nest g controller boards --no-spec// 컨트롤러 생성
// or
nest g co boards --no-spec

 

 

3. Service 서비스

Info

Service는 비즈니스 로직을 처리하는 역할을 합니다. 여러 컨트롤러에서 재사용 되는 로직을 Service로 분리하여 중복을 피할수 있습니다. 루트 경로에서 명령어로 board 서비스 파일을 생성합니다.


    
nest g service boards --no-spec//서비스 생성
// or
nest g s boards --no-spec

 

4. 생성된 파일

명령어로 파일을 생성하면 파일명 폴더에서 각 파일이 생성됩니다.

파일 구조

 

명령어로 Module 파일부터 차례로 파일을 생성하고 모듈 파일을 보시면 아래와 같이 자동으로 그룹화 되어있는것을 확인할수있습니다.

 


[NestJS] 실행하기

Package.json을 보시면 아래와 같은 명령어를 볼수있습니다.

 

Info

"start:dev": "nest start --watch",

npm run start:dev 명령어로 실행합니다.

 

 

Tip

이번 포스팅에서는 NestJS에 대해서 간단하게 알아보고, 프로젝트 설치방법 또는 Module , Controller, Service 에 대해서 생성 하는 방법에 대해서 알아보았습니다. NestJS Docs에 자세히 나와있지만 개인 공부겸 기록이라 생각해주시면 좋을거 같습니다. 아 그리고  인프런 john ahn님의 NestJS 강의 기반으로 기초에 대해서 정리를 하고, 추후에 따로 간단한 프로젝트 진행해볼까 합니다. 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)
잘못된 내용이 있으면 댓글 부탁드립니다. 감사합니다.
Stack_Shines
Stack_Shines
프론트엔드 백엔드 학습정리 및 정보공유 블로그입니다.
'IT/NestJS' 카테고리의 다른 글
  • [NestJS] @nest/config 사용하여 환경 변수 구성하자
  • [NestJS] NestJS와 TypeORM을 활용한 데이터베이스 연동 - 2
  • [NestJS] NestJS와 TypeORM을 활용한 데이터베이스 연동 - 1
느린 개발자프론트엔드 백엔드 학습정리 및 정보공유 블로그입니다.
Stack_Shines
느린 개발자
Stack_Shines
전체
오늘
어제
  • 분류 전체보기 102
    • 티스토리 10
    • IT 67
      • Library 3
      • JavaScript 3
      • TypeScript 3
      • Nuxt & vue 14
      • Nuxt3 6
      • React 4
      • NestJS 4
      • Express 9
      • CI CD 1
      • WebGl 4
      • docker 6
      • MAC 2
      • 디자인패턴 1
      • Error 4
      • 홈서버 3
    • 프로젝트 1
    • 오늘의 회고 2
    • 맛리뷰 7
    • 다이어트 5
    • 여행 1
    • 끄적끄적 일상 6
    • 생활 정보 3

인기 글

최근 글

hELLO · Designed By 정상우.
Stack_Shines
[NestJS] NestJS 설치부터 기본 개념 알아보자
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.