1. Nest.js 프로젝트 설치
- 먼저, Node.js 버전 16이상이 설치되어 있어야 한다.
- Nest.js CLI(Command Line Interface)를 이용하여 프로젝트 생성
npm install -g @nestjs/cli
- 프로젝트 생성: Nest.js CLI를 사용하여 새로운 프로젝트를 생성
nest new project-name
//현재 디렉토리에 생성을 원하면
nest new .
2. 프로젝트 기본 구조
- 프로젝트를 생성하면 기본 구조가 생성이 된다.
- main.ts: 애플리케이션의 진입점(entry point)으로 사용된다. 애플리케이션 생성 시 main.ts에서 초기화하고 실행한다.
- app.controller.ts: 각각의 컨트롤러는 요청을 받아 처리하고 응답을 반환한다.
- app.module.ts: 애플리케이션의 주 module을 정의한다.
- app.service.ts: 비지니스 로직을 처리
- nest-cli.json: 프로젝트에 특정한 설정을 할 수 있다.
- test 폴더: 프로젝트의 테스트 관련 파일을 모아 놓은 폴더. 각종 테스트를 작성하고 진행할 수 있다.
3. Nest.js 디자인 패턴
- 기본적으로 Nest.js는 클린 아키텍처 패턴을 많이 따르고 있다. 그러나 개발자의 선택에 따라 디자인 패턴의 구조는 다르게 가져갈 수 있다.
- 주요 디자인 패턴
- 의존성 주입(Dependency Injection):
- 의존성 주입을 통해 객체 간의 의존성을 관리. 이를 통해 코드의 재사용성과 유지 보수성을 높이고 테스트 용이성을 향상시킨다. - 모듈(Module):
- 애플리케이션은 여러 모듈로 구성. 각 모듈은 특정 기능을 캡슐화하고 재사용 가능한 코드의 단위를 정의한다. - 컨트롤러(Controller) & 서비스(service):
- 컨트롤러는 클라이언트의 요청을 처리, 서비스는 비즈니스 로직을 처리. 이를 통해 코드의 분리와 재사용성을 높인다. - 팩토리(Factory):
- 팩토리를 사용하여 인스턴스를 생성, 제공하는 방식. 객체의 생명주기를 관리 - 미들웨어(Middleware):
- 미들웨어를 사용하여 요청 전/후에 특정 작업을 수행 가능. 요청의 처리 과정을 제어하고, 로깅, 인증, 예외 처리 등의 작업을 수행한다. - 인터셉터(Interceptors):
- 요청을 가로채고 응답을 조작하거나 추가 작업을 수행한다. 로깅, 데이터 변환, 예외 처리 등에 활용 - 가드(Guards):
- 요청을 처리하기 전에 특정 조건을 검사하여 오청을 허용 또는 거부하는 역할을 한다. 주로 인증, 권한 부여 등에 사용
- 의존성 주입(Dependency Injection):
4. Nest.js CLI 명령어
// 모듈 생성
nest g module (name)
// 컨트롤러
nest g controller (name)
// service
nest g service (name)
// name 뒤에 --no-spec을 같이 넣으면 spec 파일을 생성하지 않는다.
==> 기본적으로 name이 같으면 같은 폴더 내에 생성된다.
==> module 생성 시 app.module.ts에 자동으로 추가된다.
5. Nest.js 실행
- Package.json에 실행 방법이 있다.
"scripts": {
"build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json"
},
==> npm run 뒤에 원하는 명령어를 넣으면 된다. ex.) npm run start:dev ==> 개발자 모드로 실행
'JavaScript Dev. > Nest.js' 카테고리의 다른 글
Nest.js - Controller (0) | 2024.02.28 |
---|---|
Nest.js - Module (0) | 2024.02.28 |
Nest.js와 OOP(객체지향 프로그래밍) (0) | 2024.01.14 |
Nest.js를 이용한 refresh token 구현하기 (0) | 2023.11.16 |
passport를 이용한 kakao, naver, google 소셜 로그인 구현 (0) | 2023.08.18 |