coding/Nest JS

Nest JS 개념 및 설치

JIN_Coder 2022. 10. 29. 18:04

Nest JS란

효율적이고 확장 가능한 Node.js서버 측 애플리케이션을 구축하기 위한 프레임워크

JS를 사용하고, TypeScript로 빌드되고, 완벽하게 지원하며 OOP (Object Oriented Programming), FP (Functional Programming) 및 FRP (Functional Reactive Programming) 요소를 사용할 수 있게 해 줍니다.

 

 

Nest JS 시작하기

npm i -g @nestjs/cli

nest new project-name # project-name에 원하는 이름 설정

# nest new ./(현재 위치에 파일들 설치)

Nest CLI를 이용하여 위 명령어 입력 시

새 프로젝트가 디렉터리에 생성되고, 초기 핵심 Nest 파일 및 지원 모듈로 디렉터리가 채워져 프로젝트 기본 구조가 생성됩니다.

 

 

Nest JS 기본 구조

- eslintrc.js

개발자들이 특정한 규칙을 가지고 코드를 깔끔하게 짤 수 있게 도와주는 라이브러리

타입스크립트를 쓰는 가이드라인 제시

문법에 오류가 나면 알려주는 역할

 

- prettierrc

주로 코드 형식을 맞추는 데 사용, 코드 포맷터 역할

 

- nest-cli.json

nest 프로젝트를 위해 특정한 설정을 할 수 있는 json파일

 

- tsconfig.json

어떻게 타입스크립트를 컴파일할지 설정

 

- src폴더(대부분의 비즈니스 로직이 들어가는 곳)

main.ts : 앱을 생성하고, 실행

app.module.ts : 앱 모듈을 정의

 

 

Nest JS 모듈이란

모듈은 @Module() 데코레이터로 주석이 달린 클래스

@Module() 데코레이터는 Nest가 애플리케이션 구조를 구성하는 데 사용하는 메타 데이터를 제공

 

같은 기능에 해당하는 것들은 하나의 모듈 폴더 안에 넣어서 사용

ex) UserController, UserService, UserEntity 모두 같은 기능이므로 UserModule 안에 넣어서 사용

import { Module } from '@nestjs/common';
import { BoardsModule } from './boards/boards.module';

@Module({
  imports: [BoardsModule],
})
export class AppModule {}

 

모듈 생성하기

nest g module boards

 

 

생성한 boardModule를 사용하기 위해선 루트 모듈인 app.module.ts에 등록해야 함

board 모듈을 명령어로 생성 시 자동으로 등록됨

 

 

Nest JS 컨트롤러란

컨트롤러는 들어오는 요청을 처리하고 클라이언트에 응답을 반환하는 역할

 

컨트롤러는 @Controller 데코레이터로 클래스를 데코레이션 하여 정의

@Controller('/boards')   // URL 경로
exprot class BoardsController {
	@Get()   // 컨트롤러 클래스 내의 단순한 메서드
    getBoards(): string{
    	return 'Hello World'
    }
}

 

컨트롤러 생성하기

nest g controller boards

nest g controller boards --no-spec #--no-spec 은 테스트를 위한 소스코드 생성X

 

 

Nest JS 서비스란

컨트롤러에서 데이터의 유효성 체크를 하거나 데이터베이스에 아이템을 생성하는 등의 작업을 하는 부분을 처리함

 

서비스 생성하기

nest g service boards

nest g service boards --no-spec #--no-spec 은 테스트를 위한 소스코드 생성X

'coding > Nest JS' 카테고리의 다른 글

PostgresSQL TypeORM  (0) 2022.11.03
Nest JS 파이프  (0) 2022.11.01
Nest JS CRUD  (0) 2022.10.31