NestJS : 모듈이란?

JooSehyun·2024년 9월 25일
0

[Study]

목록 보기
45/56
post-thumbnail

NestJS를 사용해서 만드는 앱구조

App Module안에 BoardModule과 AuthModule이 있으면 각 모듈안에 Controller Entity Service등이 있습니다. 그래서 우선 모듈이 무엇인지 알아보겠습니다.

앱 구조

AppModule (root)
├── BoardModule
│   ├── BoardController
│   ├── BoardEntity
│   ├── BoardService
│   ├── BoardRepository
│   └── ValidationPipe
└── AuthModule
    ├── AuthController
    ├── UserEntity
    ├── AuthService
    ├── UserRepository
    └── JWT, Passport

NestJS 모듈이란?

모듈은 @Module() 데코레이터로 주석이 달린 클래스입니다. @Module () 데코레이터는 Nest가 애플리케이션 구조를 구성하는 데 사용하는 메타 데이터를 제공합니다. 각 응용 프로그램에는 하나 이상의 모듈이 있습니다. 루트 모듈은 Nest가 사용하는 시작점입니다.

모듈은 밀접하게 관련된 기능 집합으로 구성 요소를 구성하는 효과적인 방법입니다. 기능 별로 만들어서 구성합니다. ex) 유저 모듈, 주문 모듈...

같은 기능에 해당하는 것들은 하나의 모듈 폴더안에 넣어서 사용합니다. ex) UserController , UserService, UserEntity 다 같은 기능이므로 UserModule안에 넣습니다.

모듈은 기본적으로 싱글 톤이므로 여러 모듈간에 쉽게 공급자의 동일한 인스턴스를 공유할 수 있습니다.

Board Module 생성하기

초기 폴더구조

NEST-APP
├── dist
├── node_modules
├── src
│   ├── 🔵 app.controller.spec.ts
│   ├── 🔵 app.controller.ts
│   ├── 🔵 app.module.ts
│   ├── app.service.ts
│   └── main.ts
├── 🔵 test
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── nest-cli.json
├── package-lock.json
├── package.json
├── README.md
├── tsconfig.build.json
└── tsconfig.json

새로운 모듈을 만들기 위해 초기 생성된 파일을 삭제한다.

  • app.controller.spec.ts
  • app.controller.ts
  • app.service.ts
  • test 폴더

모듈 생성 명령어

nest g module '모듈이름'

명령어를 입력하면 해당 모듈 폴더가 생기고 모듈 파일이 생성된다.

import { Module } from '@nestjs/common';

@Module({})
export class BoardModule {}

그리고

app.module.ts 파일에 자동으로 추가가 된다.

import { Module } from '@nestjs/common';
import { BoardModule } from './board/board.module';

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

출처: JhonAhn님의 유튜브 강의 NestJS를 참고하여 작성하였습니다.

0개의 댓글