앞으로 2~3달에 걸쳐서 NestJS를 공부해보려한다. 왜냐하면 매시업에서 같이 공부하기로 했기 때문!!!! Nest.js의 공식 문서를 이용해서 공부를 할 계획이다.
아직 Node.js도 마스터 못한것같지만... 새로운 프레임워크를 공부하며 더 많이 경험하고 노드와도 친해지기 위한 노력을 해야겠다.
Nest(NestJS)는 효율적이고 확장 가능한 Node.js 서버측 애플리케이션을 구축하기 위한 프레임워크이다.
NestJS 특징
NestJS는 Node.js와 친해서 TypeScript 및 순수 자바스크립트와 모두 호환되며, 바닐라 자바스크립트와 함께 사용하려면 Babel 컴파일러가 필요하다. 예시에서는 대부분 TypeScript를 사용할 예정.
# node.js 설치 확인
$ node -v
v14.17.3
$ npm i -g @nestjs/cli
# 생성할 프로젝트 이름을 넣어서 만들면 디렉토리와 몇가지 예시 파일로 채워짐
$ nest new <project-name>
프로젝트를 만든 곳으로 들어가보면, project-name이라는 폴더와 그 안에 몇가지 파일이 생긴 것을 확인 할 수 있다.
project-name
ㅤㅤ|- src
ㅤㅤㅤㅤ|- app.controller.spec.ts ----컨트롤러를 위한 유닛 테스트
ㅤㅤㅤㅤ|- app.controller.ts ---------하나의 라우트가 있는 기본 컨트롤러
ㅤㅤㅤㅤ|- app.module.ts -------------애플리케이션의 루트 모듈
ㅤㅤㅤㅤ|- app.service.ts ------------단일 메소드를 사용하는 기본 서비스
ㅤㅤㅤㅤ|- main.ts -------------------핵심기능 NestFactory를 사용하여 Nest 애플리케이션 인스턴스를 생성하는 애플리케이션의 엔트리 파일
// main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
// bootstrap 이라는 비동기 함수 포함
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
Nest 애플리케이션 인스턴스를 생성하기 위해 핵심 NestFactory 클래스 사용.
create() 메소드 : INestApplication 인터페이스를 충족하는 애플리케이션 객체 반환함
Nest는 플랫폼에 구애받지 않는 프레임워크를 목표로하며, 플랫폼 독립성을 통해서 재사용 가능한 논리적 부분을 만들 수 있다.
플랫폼 | 설명 |
---|---|
platform-express | Express는 노드용으로 잘 알려진 미니멀리스트 웹 프레임워크로, 기본적으로 @nestjs/platform-express 패키지가 사용됨. |
platform-fastify | Fastify는 최대 효율성과 속도를 제공하는데 중점을 둔 고성능 및 낮은 오버헤드 프레임워크 |
/* 아래와 같이 전달할 경우
* app 객체는 해당 특정 플랫폼에서만 사용할 수 있는 메서드를 갖게 된다.
*/
const app = await NestFactory.create<NestExpressApplication>(AppModule);
기본 플랫폼 API에 액세스 하려는 경우를 제외하고는 유형을 지정할 필요가 없다.
npm run start
위의 명령어는 src/main.ts 파일에 정의된 포트에서 수신대기하는 HTTP 서버로 앱을 시작한다. 애플리케이션이 실행되면 브라우저를 열고 http://localhost:3000/ 으로 접속해보면,
이렇게 뜬다면 잘한것 같다!!!!!!!