[NestJS] 1장 NestJs의 탄생 Nestjs는 무엇인가?

https://www.linkedin.com/posts/kamil-mysliwiec-992bbb105_nestjs-activity-6828639900661809152-BgCL/

 

Node.js를 기반의 프레임워크 NestJS는 효율적이고 확장 가능한 서버 사이드 애플리케이션을 구축하기 위해 설계되었습니다. TypeScript를 주력 언어로 사용해 타입스크립트 기반의 AngularJS에서 영감을 받아 모듈화된 아키텍쳐를 제공합니다


https://www.forestadmin.com/blog/nestjs-vs-expressjs-which-is-better-for-your-project/

 

Express.js와 Fastify를 기반으로 동작하며 강력한 의존성 주입(Dependency Injection) 시스템과 함께 제공하며 개발자와 팀이 쉽게 테스트하고, 확장할 수 있는 또 유지 관리하기 쉬운 애플리케이션 구축이 가능합니다. 

 

NestJS의 장점

  • 내장 기능: NestJS 프레임워크는 데코레이터, 모듈, 종속성 주입 등과 같은 여러 내장 기능을 지원합니다. 또한 애플리케이션을 모듈 단위로 구성하며, 각 모듈은 관련된 컨트롤러, 서비스, 프로바이더 등을 그룹화합니다.
  • TypeScript 지원: NestJS 프레임워크는 자바스크립트의 SuperSet인 TypeScript로 개발되었고, 향상된 코드 유지와 관리성 유형 안정성을 제공합니다. NestJS는 Typescript 지원을 활용해 애플리케이션에 강력한 타이핑을 제공해 런타임 오류를 줄여줍니다.
  • 종속성 주입: NestJs는 주로 종속성 주입에 의존해 코드 구성 및 테스트 가능성을 개선합니다. 
  • 마이크로서비스 아키텍쳐 지원: 메시지 기반 통신, 이벤트 소싱등의 패턴을 쉽게 구현합니다.
  • 커스텀 데코레이터: 커스텀 데코레이터를 정의해 비즈니스 로직과 관련된 메타데이터를 효과적으로 관리 

NestJS의 단점

  • 학습 곡선: NestJS는 TypeScript와 의존성 주입, 데코레이터 등 새로운 개념을 익혀야 하며 초보자에게 진입장벽이 존재합니다.
  • 상대적으로 무거운 라이브러리 애플리케이션: NestJS는 다른 언어들과 달리 무거운 언어로 Express.js비해 초기 설정이 복잡합니다.
  • 성능 오버헤드: Express나 Fastify에 비해 약간의 성능 오버헤드가 발생할 수 있습니다.
  • 커스터마이징 제한: 프레임워크의 구조가 엄격해 특정 상황에서 커스터마이징이 제한될 수 있습니다.

 

NestJS 설치하기

 

[NodeJS] 1장 Node.js의 탄생

2009년 5월 27일 라이언 라인하트 달(Ryan Linenhart Dahl)은 크로스플랫폼 오픈소스 자바스크립트 런타입 환경으로 윈도우, 리눅스, macOS를 지원하는 Node.js를 발표합니다. 자바스크립트 V8 엔진을 지원

thinky.tistory.com

 

NestJS 프로젝트를 구성하기 위해 Node 가 필요합니다. 위 링크에 NodeJS 설치법을 정리했으니 위 링크에서 NodeJS를 먼저 설치해주시면 되겠습니다. NodeJs를 설치했다면 CMD 명령 프롬프트창을 열고 아래 명령어를 입력해줍니다.

  • NestJS CLI 설치
    • NestJS CLI를  npm 명령어로 설치
npm install -g @nestjs/cli
  • NestJS 버전 확인
nest -v
// 11.0.2
  • 새 프로젝트 생성
    • nest new 명령어를 사용해 새 프로젝트를 생성해줍니다.
nest new nestjs-blog

 

nest new 명령어를 입력해 설치하면 3개의 선택지가 존재하는데(npm, yarn,pnpm) 이것은 여러분이 nestjs를 구동하거나 라이브러리 설치시 사용할 패키지 매니저입니다 사용하는 취향에 따라 선택해주시면 됩니다.

nestjs-blog/
├─src
├─ node_modules
├─ app.controller.spec.ts
├─ app.controller.ts
├─ app.module.ts
├─ app.service.ts
├─ main.ts
└─test/
├─ package.json
....


NestJs의 폴더구조는 위와 같습니다. 일반적인 언어들의 폴더구조와 비슷합니다. 

  • main.ts: 애플리케이션의 진입점
  • app.module.ts: 루트 모듈
  • app.controller.ts: 컨트롤러 
  • app.service.ts : 서비스 로직

이제 다음 명령어로  nestjs를 실행해보겠습니다.

npm run start

 

localhost:3000의 Hello, World가 출력되는걸 볼 수 있습니다.

LIST

'Back-End > NestJS' 카테고리의 다른 글

[NestJS] 3장 프로바이더  (0) 2025.03.07
[NestJS] 2장 컨트롤러  (0) 2025.03.07