2024-03-10 00:50:40

Github를 통해 다른 사람들의 프로젝트를 보고 Nodejs를 객체지향적으로 프로그래밍 하는 프로젝트들을 많이 봤고 수많은 패턴들이 존재한다는 것을 알게 되었다.

같은 국비교육과정을 듣고 프로젝트를 진행하다보니 하나의 패턴에만 익숙해져 이게 전부라고 생각한게 부끄러워 여러가지 구조와 아키텍처, 패턴들에 대해 경험 해보고 배우기 위해 Nestjs를 선택했다.

 

Nestjs란?

Nodejs를 위한 프레임워크로 효율적이고 안정적인 서버 사이드 애플리케이션을 구축할 수 있게 해주는 도구입니다.

기본 언어로 Typescript를 사용하며 Express와 같은 Node의 장점을 살리면서 객체 지향 프로그래밍, 함수형 프로그래밍, 그리고 함수 반응형 프로그래밍의 요소를 통합하여 모던한 웹 애플리케이션 개발에 필요한 강력한 툴킷을 제공합니다.

 

Nestjs가 만들어지게 된 배경

Nestjs는 이름에서도 알 수 있듯이 Javascript를 사용합니다.

Javascript의 단점 중 하나인 동적 타입 언어는 큰 규모의 프로젝트에서 유지 보수와 디버깅을 어렵게 한다는 점이 큰 단점 중에 하나로 볼 수 있는데 javascript의 상위 언어셋인 Typescript는 정적 타입을 제공하여 이 문제를 해결해줍니다. 

그리고 Nodejs는 구조와 아키텍처의 자유성이 뛰어나 다는 점이 장점이자 단점으로 프로젝트별 유지관리가 어렵고 체계적이지 않을 수 있습니다.

이러한 문제로 Typescript의 장점을 최대한 활용하고 Angular의 디자인 패턴과 아키텍처를 참조하여 백엔드 애플리케이션을 위한 체계적이고 유지 관리가 용이한 구조를 제공해주어 큰 규모의 애플리케이션 개발 과정에서 겪을 수 있는 구조적인 어려움을 해결하기 위해 Nestjs가 등장하게 됬습니다.

 

Nestjs Setup

Nestjs는 기본적으로 Nodejs를 사용하기 때문에 16버전 이상의 nodejs가 설치되어 있어야합니다.

npm i -g @nestjs/cli

 

프로젝트 생성

nest new [프로젝트명]
// nest new [프로젝트이름]
nest new nest-app

// 명령어를 입력하게 되면 어느 패키지 매니저로 다운받을지 선택하라고 나옴
Which pacage manager would you to use? (Use arrow keys)
> npm
  yarn
  pnpm

 

프로젝트 구조

 

간단한 설명

 

  • app.controller.spec.ts : app.controller.ts의 테스트 파일 jest를 사용하며 해당 파일에 대한 테스트 파일의 이름에 spec이 들어감
  • app.controller.ts : HTTP 요청을 처리하고 응답하는 역할로 특정 경로에 대한 요청을 받아 비즈니스 로직을 수행하고 클라이언트에게 반환
  • app.module.ts : 기본 구성 단위로 각 모듈은 애플리케이션의 일부를 캡슐화하고 관련 기술들을 조직화 하여 애플리케이션을 모듈화하고 재사용성과 유지 보수성을 향상
  • app.service.ts : 비즈니스 로직을 처리하며 컨트롤러로부터 데이터를 받아 로직을 처리하며 결과를 다시 컨트롤러에게 반환
  • main.ts : 애플리케이션을 시작하고 실행하는 파일로 포트를 지정하여 애플리케이션을 리스닝
728x90

'Nestjs' 카테고리의 다른 글

[NestJs] Interceptors 알아보기  (0) 2024.03.14
[NestJs] Guards 알아보기  (0) 2024.03.13
[NestJs] Pipes 알아보기  (1) 2024.03.12
[NestJs] Exception filters 알아보기  (0) 2024.03.11
[NestJs] 기본 구조 살펴보기  (0) 2024.03.10