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 프로젝트를 만들 수 있다.
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
에는 애플리케이션을 부트스트랩하는 비동기 함수가 포함되어 있다.
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가 있다.
어떤 플랫폼이 사용되든 자체 애플리케이션 인터페이스를 노출한다. 각각 NestExpressApplication
및 NestFastifyApplication
으로 표시된다.
아래 예제와 같이 NestFactory.create()
메서드에 타입을 전달하면 app
객체에는 해당 특정 플랫폼에서만 사용할 수 있는 메서드가 생긴다. 기본 플랫폼 API를 사용하는 경우 타입을 지정할 필요가 없다.
5. Running the application
설치 프로세스가 완료되면 터미널에서 다음 명령을 실행하여 인바운드 HTTP 요청을 수신하는 애플리케이션을 시작할 수 있다.
이 명령은 src/main.ts
파일에 정의된 포트에서 수신 대기하는 HTTP 서버로 앱을 시작한다. 애플리케이션이 실행된 후 브라우저를 열고 http://localhost:3000/
으로 이동하면 Hello World!
를 볼 수 있다.
파일의 변경 사항을 확인하려면 다음 명령을 실행하여 애플리케이션을 시작할 수 있다.
이 명령은 파일을 감시하여 자동으로 서버를 다시 컴파일하고 로드한다.