Nest js 란?
: 카밀 미슬리비에츠가 개발한 "node js 의 웹 프레임워크"로, WAS framework 인 Express 또는 Fasity 기반으로
OOP를 지향하며, 개발이 가능 하다.
Node js 란? (대부분 이미 알겠지만!)
: Javascript 의 런타임 환경으로 서버 사이드 개발을 지원 함
Node js 의 주요 특징은?
1) 비동기 단일 쓰레드(여러 I/O를 병렬적으로 처리가능, 고성능 서버 구축)
2) NPM(Node Package Manager) 를 이용하여 다양한 라이브러리를 쉽게 설치 및 사용 가능
3) 빠른 처리속도(가볍다, 필요한 것만 설치해서 사용가능)
4) 모듈화
5) 이벤트 기반
6) Javascript 기반
설치는? (version: LTS(v22.13.11))
Node.js — Run JavaScript Everywhere
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
pnpm 사용시
(기존 npm, yarn 사용과 유사하지만 node_modules 폴더의 패키지가 중복으로 저장되지 않는다 - 글로벌 스토리지(cache)에 저장하여 사용)
npm install -g pnpm
그럼 왜 Nest js 인가?
1) Node js 의 장점을 사용하여, OOP 개발이 가능(NPM + OOP + FP)
2) 웹개발에 필요한 라이브러리 집합(NPM)을 프레임워크에서 바로 지원, 쉽게 사용 가능(개발 편의성)
3) Typescript 기반의 개발가능(javascript 의 단점 보완)
Nest js 의 주요 구조
1) module
- app.Module 을 중심으로 각 도메인별 모듈로 구성
- 각 모듈에서 controller, service, provider 등을 관리하는 구조
2) controller
- Client Side(App, Web) 로 부터 http request 를 받은 router 역할 수행
- Auth check( 1.Role(Authorization), 2.Token(Authentication))
- 특징, 라우팅 역할로써 관련된 비지니스 로직을 호출하여 return
3) service
- 비지니스 로직을 수행
- 필요시 repository 호출
- nest IoC Container 에서 관리(by @Injectable()
4) repository
- 영속성관리를 위해 ORM 과 연동하여 Data CRUD
5) DTO(Data Transfer Object)
- Layer 간의 이동시 전송하는 객체(Data 교환을 간소화하고 효율적으로 관리 목적)
- static of 등의 명령어를 사용하여 layer간 data 변환 시 사용
(service layer에선 주요 비지니스를 수행하는 관점에서 사용,
data 변환은 DTO 내 static of 를 이용하여 간소화 및 재사용 증대 목적)
6) Interface
- type을 미리 정의함으로써 type의 안정성을 보장
- 공식문서의 예시는 controller로 부터 DTO로 전달받은 매개변수를 받는 type으로 사용
7) entity(typeorm 기반일 경우)
- Table 과의 mapping 을 담당
- 컬럼 및 관계(@OneToMany 등)를 정의
8) model(prisma 기반일 경우)
- Table 과의 mapping 을 담당
- 컬럼 및 관계를 db modeling 기반으로 정의
'Node js > Nest js 강의 내용' 카테고리의 다른 글
5-1. prisma 기본 (0) | 2024.12.06 |
---|---|
4. controller & service정리 (1) | 2024.12.06 |
3. Nest 프로젝트 생성 및 예상 아키텍처 (0) | 2024.12.06 |
2. 요구사항 분석 및 ERD 설계 (0) | 2024.12.06 |
0. [과정을 들어가면서] 과정소개 (0) | 2024.12.04 |