728x90

NestJS 개요-첫 걸음

첫 걸음

이 문서에서는 Nest의 핵심 기본 사항에 대해 알아봅니다.
Nest 애플리케이션의 필수 구성 요소에 익숙해지기 위해서 입문 수준의 많은 기능을 다루는CRUD 애플리케이션을 작성할 것입니다.

언어

우리는 TypeScript를 좋아하며, Node.js 역시 좋아합니다. Nest는 TypeScript와 순수 JavaScript와도 호환됩니다. Nest는 최신 언어 기능을 활용하고 있어 바닐라 JavaScript와 함께 사용하기 위해서는 Babel 컴파일러가 필요합니다.

전제 조건

운영체제에 Node.js (>= 10.13.0)가 설치되어 있는지 확인해주세요.

설정

새 프로젝트를 설정하는 것은 Nest CLI를 사용해서 매우 간단히 작업할 수 있습니다. 터미널에서 다음 명령을 입력하면 npm을 이용해서 새 Nest 프로젝트를 생성할 수 있습니다.

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

프로젝트 디렉토리가 생성되고, 노드 모듈과 몇 가지 보일러플레이트 파일이 설치됩니다.
src/ 디렉토리는 여러 개의 코어 파일을 생성하고 채워집니다.

src
  - app.controller.ts
  - app.module.ts
  - main.ts

핵심 파일에 대한 대략적인 개요는 다음과 같습니다.

  • app.controller.ts: 단일 경로(route)의 기본 컨트롤러 샘플
  • app.module.ts: 애플리케이션의 루트(root) 모듈
  • main.ts: 핵심 기능 NestFactory를 사용해 Nest 애플리케이션 인스턴스를 작성하는 애플리케이션의 엔트리 파일

main.ts에는 애플리케이션을 bootstrap 하는 비동기 함수가 포함됩니다.

// 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 인터페이스를 충족하는 애플리케이션 객체를 반환합니다. 이 객체는 다음 장에서 설명하는 일련의 메소드를 제공합니다.
위의 main.ts 예제에서 HTTP 리스터를 시작하면 애플리케이션이 인바운드 HTTP를 기다릴 수 있습니다.

Nest CLI로 스캐폴딩된 프로젝트는 개발자가 각 모듈을 전용 디렉토리에 보관하는 규칙을 따르도록 권장하는 포기 프로젝트 구조를 생성합니다.

플랫폼

Nest는 플랫폼에 구애받지 않는 프레임워크를 목표로 합니다. 플랫폼 독립성을 통해 개발자가 여러 유형의 응용 프로그램에서 활용할 수 있는 재사용 가능한 로직을 만들 수 있습니다. Nest는 어댑터가 생성되면 모든 Node HTTP 프레임워크와 함께 동작할 수 있습니다. HTTP 플랫폼인 expressfastify가 기본적으로 지원되며, 필요에 따라 적합한 것을 선택해 사용할 수 있습니다.

  • platform-express
    • Express는 잘 알려진 미니멀리스트 Node 웹 프레임워크입니다.
    • 커뮤니티에서 구현된 많은 리소스를 갖추고 있는 프로덕션용 라이브러리입니다.
    • @nestjs/platform-express 패키지는 기본적으로 사용되므로, 활성화하기 위해 조치를 취할 필요가 없습니다.
  • platform-fastify
    • Fastify는 최대 효율과 속도를 제공하는 것에 중점을 둔 고성능 및 오버헤드가 낮은 프레임워크입니다.
    • 여기에서 사용 방법을 확인할 수 있습니다.

어떠한 플랫폼을 사용하든 자체 애플리케이션 인터페이스를 제공합니다. 이들은 각각 NestExpressApplicationNestFastifyApplication로 표시됩니다.

아래 예제와 같이 NestFactory.create() 메소드에 타입을 전달하면 app 객체는 해당 특정 플랫폼에서만 사용할 수 있는 메소드를 갖게 됩니다. 실제로는 기본 플랫폼 API에 엑세스하는 경우가 아니라면 유형을 지정할 필요가 없습니다.

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

응용 프로그램 실행

설치 과정이 완료되면 OS 터니멀에서 다음 명령어를 실행해 인바운드 HTTP 요청을 수신하는 애플리케이션을 실행할 수 있습니다.

$ npm run start

이 명령은 src/main.ts 파일에 정의된 포트에서 수신 대기ㅣ하는 HTTP 서버로 앱을 실행합니다. 애플리케이션이 실행되면 브라우저를 열고 http://localhost:3000/로 이동해서 확인할 수 있습니다. Hello World!라는 메시지가 보일 것입니다.


NestJS 공식 문서 번역에 대한 다른 글도 보고 싶으시다면 아래 글을 확인해주세요.
[Node/NestJS] - NestJS 공식 문서 번역 모아보기

728x90
728x90

'Guide > NestJS' 카테고리의 다른 글

NestJS 공식 문서 번역 모아보기  (0) 2020.11.09
NestJS 개요-컨트롤러.Request 객체  (0) 2020.11.09
NestJS 개요-컨트롤러.라우팅  (0) 2020.11.08
NestJS 소개  (0) 2020.10.24