NestJS

Baeg-won·2023년 9월 7일
0

NestJS

NestJS는 Javascript나 Typescript로 서버 애플리케이션을 개발할 수 있는 백엔드 웹 프레임워크(Web framework)이다.

자바의 스프링(Spring)이나 파이썬의 장고(Django)를 생각하면 이해가 빠를 것이다.

자바스크립트 쪽에서는 상당히 오랫동안 Express라는 웹 프레임워크가 서버 애플리케이션 개발에 있어서 압도적인 점유율을 차지했었다. Express가 워낙 경량화된 프레임워크이기 때문에 정말 핵심적인 기능만 제공하다보니 간단한 서버 애플리케이션을 개발하는데는 큰 문제가 없었지만, 어느 정도 규모가 있는 프로젝트에서는 직접 구현해야 하는 기능이 너무 많았고, 다른 라이브러리를 추가로 필요로 하는 경우도 많아서 사용하기가 불편했다.

이러한 문제를 해결하기 위해 등장한 것이 NestJS이다.

NestJS는 기업용 애플리케이션을 개발하기에도 무리가 없을 정도로 왠만한 기능은 모두 내장하고 있고 플러그인(plugin)을 통해서 쉽게 확장할 수도 있다. 뿐만 아니라 OOP(객체 지향 프로그래밍), DI(의존성 주입), AOP(관점 지향 프로그래밍)와 같은 백엔드 개발 트랜드를 충실히 반영하고 있기 때문에 고품질의 코드를 작성하는데에도 도움을 줄 수 있다.

NestJS CLI

NestJS는 개발자가 편리하게 NestJS 프로젝트를 개발하고 설정할 수 있도록 강력한 CLI(Command Line Interface) 도구를 제공하고 있다.

터미널을 열고 아래 명령어를 실행하여 NestJS CLI 도구를 전역에 설치할 수 있다.

$ npm i -g @nestjs/cli

이제 터미널에서 nest 명령어를 사용할 수 있으며, 새로운 NestJS 프로젝트를 생성하기 위해서는 다음 명령어를 수행해야 한다.

$ nest new [프로젝트 명]

nest new 명령어 뒤에 프로젝트 명을 넘기면 해당 이름의 프로젝트가 생성되고, 그 안에 NestJS 프로젝트 구동에 필요한 요소가 자동으로 구성된다.

이후 생성한 프로젝트로 진입하여 다음 명령어를 실행하면 애플리케이션이 구동된다.

$ npm run start

다른 터미널을 열고 다음과 같이 명령어를 찔러보면 Hello World!가 응답되는 것을 확인할 수 있다.

$ curl http://localhost:3000
Hello World!%

main.ts

NestJS 프로젝트를 생성하면서 자동으로 생성된 파일 중의 하나인 main.ts 파일은 NestJS 애플리케이션이 시작되는 진입 지점(entry point)이 된다. 파일을 열어보면 매우 짧은 코드가 들어있는 것을 확인할 수 있다.

import { NestFactory } from "@nestjs/core";
import { AppModule } from "./app.module";

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

코드의 마지막 줄에는 결국 bootstrap()이라는 함수를 호출하고 있는데, bootstrap() 함수 안에서는 app.module 파일로 부터 AppModule을 불러와서 NestFactory가 애플리케이션 객체를 생성하고 3000번 포트로 HTTP 요청을 받고 있다.

이것이 아까 전에 위에서 http://localhost:3000에 접속이 가능했던 이유이다.

📌 Reference

profile
Easy come Easy go

0개의 댓글