Nest-First steps
Nest를 공부하야 하는 이유
우리가 node를 사용해서 백엔드 서버를 구축하는 것은 아주 흔한 일입니다.
하지만 node서버의 단점은 모든 프로젝트의 구조가 개인, 팀, 기업별로 다르다는 것이죠.
nest는 node서버의 이러한 단점을 보완함은 물론이고 TypeScript를 사용한 프레임워크 입니다.
TypeScript를 사용하여 코드를 작성하고 *Babel*을 활용하여 vanilla JS로 컴파일하여 사용합니다.
Nest 공식문서 번역 및 블로깅
사실 nest는 회사에서 신규 프로젝트에 nest를 도입하기 위해 스터디를 진행했었습니다. 프로젝트가 조금 미뤄지게 되면서 nest에 대해 조금 더 알아볼 시간적 여유가 생겨 사이드 프로젝트를 진행하며 공식문서에 대해서 조금 더 자세하게 알아보고 지식에 대한 기록을 하기 위해 Nestjs의 카테고리를 통해 블로그를 작성해나갈 예정입니다.
Nest 프로젝트 시작하기
_Node.js버전_은 13버전을 제외한 10.13버전 이상에서 지원합니다.
Nest 설치 및 프로젝트 생성
$ npm i -g @nestjs/cli
$ nest new project-name
project-name에는 각자 프로젝트의 이름을 적어서 시작하면 되고 해당 프로젝트의 이름으로 지어진 폴더 내부에 아래와 같은 구조로 프로젝트가 생성이 됩니다.
src |--app.controller.spec.ts |--app.controller.ts |--app.module.ts |--app.service.ts |--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();
위는 main.ts의 코드 입니다.
- app.module을 가져와 NestFactory를 통해 하나의 app을 만듭니다. 현재 사용할 nest프레임워크의 상황에서는 node.js에서 express로 만들었던 app에 nest의 성질을 입혔디고 생각하면 좋겠습니다.
플랫폼
Nest프레임워크는 플랫폼에 의존하지 않도록 만들어졌습니다. 따라서 여러가지 플랫폼을 Nest를 통해 사용할 수 있습니다.
HTTP
Fastify 플랫폼과 express 플랫폼을 제공합니다.
express 플랫폼이 기본값으로 제공이 됩니다.
main.ts의 내용중 app의 생성은
const app = await NestFactory.create<NestExpressApplication>(AppModule);
의 내용을 생략한 것입니다.NestFactory.create()
할 때 express 플랫폼을 사용한다면 타입을 지정해주지 않아도 됩니다.fastify 플랫폼을 이용한다면
npm i --save @nestjs/platform-fastify Adapter
명령어를 통해 설치 후 main.ts는 아래와 같이 작성해야 하며 자세한 정보는 여기를 참조 해주세요.import { NestFactory } from '@nestjs/core'; import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create( AppModule, new FastifyAdapter() ); await app.listen(3000); } bootstrap();