Skip to content

1. First steps


Nest 애플리케이션의 필수 구성 요소에 익숙해지기 위해 입문 수준에서 많은 부분을 다루는 기능을 갖춘 기본 CRUD 애플리케이션을 빌드한다.


1. Language

Nest는 TypeScript 및 바닐라 JavaScript와 모두 호환된다. Nest는 최신 언어 기능을 활용하므로 바닐라 JavaScript와 함께 사용하려면 Babel 컴파일러가 필요하다.


2. Prerequisites

Node.js(≥ 10.13.0, v13 제외)가 운영체제에 설치되어 있는지 확인한다.


3. Setup

Nest CLI를 사용하면 새 프로젝트를 설정하는 것이 매우 간단하다. npm이 설치된 상태에서 OS 터미널에서 다음 명령을 사용하여 새 Nest 프로젝트를 만들 수 있다.


npm i -g @nestjs/cli
nest new project-name


project-name 디렉터리가 생성되고 노드 모듈 및 몇 가지 다른 상용구 파일이 설치되며 여러 코어 파일로 채워진 src/ 디렉터리가 생성된다.


src
├── app.controller.spec.ts
├── app.controller.ts
├── app.module.ts
├── app.service.ts
└── main.ts


다음은 이러한 핵심 파일에 대한 간략한 개요이다.


파일 설명
app.controller.ts 단일 경로로 된 기본 컨트롤러
app.controller.spec.ts 컨트롤러 유닛 테스트
app.module.ts 애플리케이션의 루트 모듈
app.service.ts 컨트롤러에 제공되는 서비스
main.ts NestFactory를 사용하여 Nest 애플리케이션 인스턴스를 생성하는 파일


main.ts에는 애플리케이션을 부트스트랩하는 비동기 함수가 포함되어 있다.


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() 메서드는 INestApplication 인터페이스를 실행하는 애플리케이션 객체를 반환한다.


4. Platform

Nest는 플랫폼에 구애받지 않는 프레임워크를 목표로 한다. 플랫폼 독립성을 통해 개발자가 여러 타입의 애플리케이션에서 활용할 수 있는 재사용 가능한 논리적 부분을 생성할 수 있다. 기술적으로 Nest는 어댑터가 생성되면 모든 Node HTTP 프레임워크와 함께 작동할 수 있다. 기본적으로 지원되는 두 가지 HTTP 플랫폼인 Express 및 Fastify가 있다.


어떤 플랫폼이 사용되든 자체 애플리케이션 인터페이스를 노출한다. 각각 NestExpressApplicationNestFastifyApplication으로 표시된다.


아래 예제와 같이 NestFactory.create() 메서드에 타입을 전달하면 app 객체에는 해당 특정 플랫폼에서만 사용할 수 있는 메서드가 생긴다. 기본 플랫폼 API를 사용하는 경우 타입을 지정할 필요가 없다.


const app = await NestFactory.create<NestExpressApplication>(AppModule);


5. Running the application

설치 프로세스가 완료되면 터미널에서 다음 명령을 실행하여 인바운드 HTTP 요청을 수신하는 애플리케이션을 시작할 수 있다.


npm run start


이 명령은 src/main.ts 파일에 정의된 포트에서 수신 대기하는 HTTP 서버로 앱을 시작한다. 애플리케이션이 실행된 후 브라우저를 열고 http://localhost:3000/으로 이동하면 Hello World!를 볼 수 있다.


파일의 변경 사항을 확인하려면 다음 명령을 실행하여 애플리케이션을 시작할 수 있다.


npm run start:dev


이 명령은 파일을 감시하여 자동으로 서버를 다시 컴파일하고 로드한다.


References