728x90
1. OVERVIEW
First steps
- Nest는 타입스크립트와 순수 자바스크립트 둘 다 호환 가능
- 그러나 바닐라 자바스크립트를 이용하려면 바벨 컴파일러를 함께 사용해야함
1. 설정
Node.js 16
이상부터 가능
# 다음 명령어로 간단하게 새 프로젝트 생성 가능
$ npm i -g @nestjs/cli
$ nest new project-name
프로젝트 구조는 다음과 같이 구성된다.
src
├ app.controller.spec.ts # 컨트롤러 유닛 테스트
├ app.controller.ts # 싱글 라우트에 관한 기본적인 컨트롤러
├ app.module.ts # 애플리케이션의 루트 모듈
├ app.service.ts # 싱글 메소드에 관한 기본적인 서비스
┕ main.ts # Nest 애플리케이션 인스턴스를 생성하기 위한 핵심 NestFactory 함수
- main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// create 메소드: INestApplication 인터페이스를 구현한 애플리케이션 오브젝트
await app.listen(3000); // HTTP 요청을 기다힌다.
}
bootstrap();
- 부트스트랩 애플리케이션
- Nest 애플리케이션 인스턴스를 만들기 위해
NestFactory
클래스를 사용한다. NestFactory
는 애플리케이션 인스턴스를 만드는 정적 메소드 노출한다.
- Nest CLI로 발판이 마련된 프로젝트는 개발자가 디렉토리 구조내의 각 모듈의 컨벤션을 유지하도록 따르는 컨벤션을 제공한다.
2. 플랫폼
- Nest는 플랫폼 독립적인 프레임워크를 목표로 한다
- 플랫폼 독립성은 다른 유형의 애플리케이션간의 이점에 대한 재사용성을 높인다.
- 기술적으로 Nest는 Node HTTP 프레임워크에 대해 지원한다.
express
와fastify
의 두 HTTP 플랫폼을 지원한다.- 두 플랫폼 중 적합한 프레임워크를 하나 골라서 적용한다.
@nestjs/platform-express
패키지는 디폴트로 사용된다.- 많은 유저들은 Express로 서빙한다.
- 사용하는 플랫폼에 따라 애플리케이션 인터페이스를 달리하여 사용한다.
NestExpressApplication
,NestFastifyApplication
const app = await NestFactory.create<NestExpressApplication>(AppModule);
- 사용하는 플랫폼에 따라 인터페이스를 타입 명시하여 사용한다.
- 실행
$ npm run start
💡 개발 프로세스 속도를 높이기 위해 SWC builder를 플래그로 넘겨서 사용할 수 있다.
- b swc 해당 플래그를 start 스크립트 내부에 내장하거나 시작시 옵셥으로 넘긴다.
- npm run start -- -b swc
- 애플리케이션 시작
$ npm run start:dev
3. Linting & Formatting
CLI
는 개발 워크플로우를 대규모로 구축하기 위해 많은 도움을 준다.- 만들어진 Nest 프로젝트는 코드 linter와 formatter가 설치된 상태로 제공된다.
- cli 패키지에서 기본
eslint
와prettier
를 사용할 수 있다.
# Lint and autofix with eslint
$ npm run lint
# Format with prettier
$ npm run format
- 패키지 내에 스크립트가 짜여있다.
728x90
'🏠 Framework > NestJS' 카테고리의 다른 글
[NestJS] TypeORM (21) | 2024.01.15 |
---|---|
[NestJS] Pipe 이용 (0) | 2024.01.15 |
[NestJS] CRUD 구현 (0) | 2024.01.15 |
[NestJS] NestJS 기본 요소 (20) | 2024.01.15 |