NestJS는 타입스크립트 및 자바스크립트와 완벽하게 호환됩니다. Nest를 사용하려면 Node.js가 설치되어 있어야 합니다.
이번 글에서는 NestJS 프로젝트를 시작하는 방법과 자동으로 설치되는 기본 파일의 역할에 대해 알아보도록 하겠습니다.
Nest 시작하기
터미널에 다음 명령어를 입력하여 새로운 프로젝트를 시작할 수 있습니다.
$ npm i -g @nestjs/cli
$ nest new project-name
project-name
디렉토리가 생성되며 노드 모듈과 몇 가지 보일러플레이트 파일이 설치됩니다. src/
디렉토리를 열어보면 서버의 핵심 파일들이 있습니다.
각 파일의 역할은 다음과 같습니다.
파일 이름 | 설명 |
---|---|
app.controller.ts |
외부 요청을 처리하는 컨트롤러 |
app.controller.spec.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);
await app.listen(3000);
}
bootstrap();
위 코드를 코드를 살펴보면 Nest 애플리케이션 인스턴스를 생성하기 위해 NestFactory
클래스를 사용하고 있는데요. NestFactory
는 애플리케이션 인스턴스 생성을 위한 몇 가지 정적 메소드를 제공합니다. create()
메소드는 애플리케이션 객체를 반환합니다. 애플리케이션 객체가 제공하는 메소드들은 다음 챕터에서 알아볼 것입니다. 위의 main.ts
예시를 통해 간단히 HTTP 리스너를 시작하고 애플리케이션이 HTTP 요청을 수신하는 방법을 확인할 수 있습니다.
Nest 플랫폼
Nest는 플랫폼에 대한 지식 없이(platform-agnostic)도 이를 사용할 수 있게 하는 것을 목표로 합니다. 플랫폼 독립적이기 때문에 개발자들은 재사용 가능한 코드를 작성하고 다양한 유형의 애플리케이션에서 이를 활용할 수 있습니다. Nest는 어댑터를 생성하면 모든 Node HTTP 프레임워크와 상호작용할 수 있습니다. 가장 많이 사용되는 두 가지 HTTP 플랫폼은 express와 fastify입니다.
플랫폼 | 설명 |
---|---|
platform-express |
Express는 잘 알려진 노드의 가벼운 웹 프레임워크입니다. 많은 테스트를 거쳤으며 커뮤니티가 제공하는 엄청난 라이브러리들이 있습니다. 기본적으로 @nestjs/platform-express 패키지가 사용되도록 자동으로 설정되어 있습니다. |
platform-fastify |
Fastify는 효율성과 속도에 맞춘 고성능 프레임워크입니다. |
아래의 예시와 같이 NestFactory.create()
메소드를 사용하면 app
객체는 해당 플랫폼에서 사용할 수 있는 메소드를 갖게 됩니다. 그러나 기본 플랫폼 API에 실제로 접근하는 것이 아니라면 타입을 명시할 필요는 없습니다.
const app = await NestFactory.create<NestExpressApplication>(AppModule);
앱 실행하기
Nest 설치를 완료했다면 아래 명령어를 사용하여 HTTP 요청을 수신할 수 있습니다.
npm run start
이는 src/main.ts
파일에 정의된 포트를 통해 HTTP 서버 요청을 수신합니다. 애플리케이션이 실행 중인지 확인하려면 http://localhost:3000/
으로 이동하세요. Hello World!
메시지가 보일 것입니다.
파일 변경 사항을 지켜보고 싶다면 다음 개발자 커맨드를 통해 서버를 실행합니다. 이렇게 하면 파일 변화를 감지하고 자동으로 리컴파일링을 완료한다음 서버를 리로드합니다.
npm run start:dev
참고 자료
'개발 > NestJS' 카테고리의 다른 글
NestJS 기초 (4) 데이터베이스 연동 (0) | 2022.10.01 |
---|---|
NestJS 기초 (3) 컨트롤러 (0) | 2022.09.30 |
NestJS 기초 (1) NestJS란? (0) | 2022.09.29 |