본문 바로가기
Frameworks/Nest.js

[Nest.js] Start

by junseokoo 2025. 4. 9.

Nest.js?

  • 효율적이고 확장 가능한 Node.js 서버 애플리케이션을 구축하기 위한 프레임 워크
  • progressive Javascript를 사용하고 TypeScript로 빌드가 지원된다.
  • Nest는 OOP(Object Oriented Programming), FP(Functional Programming) 및 FRP(Functional Reactive Programming)을 사용할 수 있게 해준다.
  • ORM,데이터베이스,설정(Configuration),유효성 검사 등 수많은 기능을 기본으로 제공한다.
  • 모듈/컴포넌트 기반으로 프로그램을 작성함으로써 재사용성을 높여준다.
  • IoC(Inversion of Control), DI(Dependency Injection), AOP(Aspect Oriented Programming)와 같은 객체지향 개념을 도입했다.
  • 타입스트립트를 기본으로 채택하여 타입스크립트가 가진 타입시스템의 장점을 가진다.

SetUp

  • Nest CLI를 사용하면 프로젝트 생성이 쉽게 가능하다.
  • npm or yarn 이 설치된 상태에서 Nest 프로젝트를 쉽게 만들 수 있다.
$ yarn add -g @nestjs/cli
$ nest new project-name
  • TypeScript의 엄격 모드를 활성해 생성하려면 --stricct 플래그를 nest new 명령어에 전달
  • 프로젝트 디렉토리가 생성되고, node_modules과 몇 가시 파일이 설치되며 src/ 디렉토리가 생성되어 여러 코어파일로 채워진다.

생성시 폴더 구조

src
ㄴ--app.controller.spec.ts # 컨트롤러에 대한 unit test
ㄴ--app.controller.ts # 단일 경로가 있는 기본 컨트롤러 (라우팅)
ㄴ--app.module.ts # root module (메타데이터를 담당)
ㄴ--app.service.ts # 단일 메서드를 사용하는 기본 서비스 (비즈니스 로직)
ㄴ--main.ts # NestFactory를 사용하여 Nest 애플리케이션 인스턴스를 생성하는 엔트리 파일

간단 프로젝트 생성 명령어

# module 생성
$ nest g module || mo name 

# controller 생성
$ nest g controllser || co name

# service 생성
$ nest g service || s name 

# CRUD 템플릿을 생성
$ nest g ressource name 

# g == generate
# --no-spect 테스트 파일 미생성

main.ts

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();
  • 위와 같이 NestFactory.create() 메서드에 유형을 전달하면, 앱 개체에는 해당 특정 플랫폼에서만 사용할 수 있는 메서드가 있다.
  • Nest 애플리케이션 인스턴스를 생성하기 위해 핵심 NestFactory 클래스를 사용한다.
  • NestFactory는 애플리케이션 인스턴스 생성을 허용하는 몇 가지 정적 메서드를 노출한다.
  • create() 메서드는 INestApplication 인터페이스를 충족하는 애플리케이션 객체를 반환한다.
  • 이 개체는 다음 장에서 설명하는 메서드 집합을 제공합니다. 위의 main.ts 예제에서는 애플리케이션이 인바운드 HTTP 요청을 기다리도록 하는 HTTP 수신기를 시작하기만 하면 된다.

실행

$ yarn start || npm run start
  • localhost:3000 포트가 열린다.
  • 접속해서 Hello World!페이지가 열린다면 성공!

 

'Frameworks > Nest.js' 카테고리의 다른 글

[Nest.js] Module  (0) 2025.04.09
[Nest.js] Provider  (0) 2025.04.09
[Nest.js] Controller  (0) 2025.04.09
[Nest.js] MySQL Connect  (0) 2025.04.09