과제 전형에서 nest.js를 사용하게 되어서 node.js와 nest.js에 대해서 기초?만 간단하게 정리해보는 글..
Chrome V8 Engine으로 빌드된 JavaScript 런타임 환경 → 다양한 OS 환경에서 실행 가능
싱글 쓰레드 비동기 방식 : 입력은 하나의 쓰레드에서 받지만, 받은 순서대로 처리하지 않고 먼저 처리된 결과 값을 먼저 반환
👍🏻 로직이 간단하면서, 대용량의 요청을 빠르게 처리해야 하는 서비스 : 스트리밍, 채팅 등
👎🏻 로직이 복잡하면서 단일 작업의 처리 시간이 오래 걸리는 서비스
Node.js에 기반을 둔 웹 프레임워크
Node.js의 단점 보완
✅ Nest.js는 Node.js 기반 : Node.js 먼저 설치 후, npm을 통해 Nest.js 라이브러리 설치
node -v
-g
: 글로벌 환경에 설치npm i -g @nestjs.cli # 설치
npm root -g # 글로벌 환경 설치 경로 확인
nest new [프로젝트명]
? Which package manager would you ❤️ to use? (Use arrow keys)
> npm
yarn
pnpm
app.controller.ts
: 기본 컨트롤러 (라우팅 + 요청 처리)app.controller.spec.ts
: 컨트롤러 단위 테스트용 파일app.module.ts
: 최상위 모듈 파일app.service.ts
: 단일 메서드를 사용하는 기본 서비스 로직main.ts
: 애플리케이션을 실행하는 엔트리 파일npm run start # 서버 실행
npm run start:dev # 수정 사항 바로 반영
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();
app.controller.ts
: 컨트롤러import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller() // 컨트롤러 선언
export class AppController {
constructor(private readonly appService: AppService) {} // 서비스 의존성 주입 : 생성자
@Get() // Get 요청을 받아서 처리 (루트 경로)
getHello(): string {
return this.appService.getHello(); // 서비스 로직 호출
}
}
app.service.ts
: 서비스import { Injectable } from '@nestjs/common';
@Injectable() // 다른 서비스에 주입될 수 있음을 명시 → 컨트롤러에서 주입하여 사용
export class AppService {
getHello(): string { // 내부 로직 정의
return 'Hello World!';
}
}