참고 :이 글은 nestjs를 처음 배운 후 블로거의 지식과 이해를 기록한 것입니다. 경험은 여전히 얕습니다. 글의 내용은 참고 용입니다. 오류가 있으면 수정 해주세요.
다중 모듈 애플리케이션 구조
0. 다중 모듈 디렉토리 구조의 예
src
├──cats
│ ├──dto
│ │ └──create-cat.dto.ts
│ ├──interfaces
│ │ └──cat.interface.ts
│ ├─cats.service.ts
│ ├─cats.controller.ts
│ └──cats.module.ts
├──dogs
│ ├──dto
│ │ └──create-dog.dto.ts
│ ├──interfaces
│ │ └──dog.interface.ts
│ ├─dogs.service.ts
│ ├─dogs.controller.ts
│ └──dogs.module.ts
├──app.module.ts
└──main.ts
1. 모듈 분할 및 정의
모듈 부문
- 구분 원칙 : 백엔드는 일반적으로 비즈니스 객체의 추가, 삭제, 수정 및 확인과 같은 작업의 전체 비즈니스 프로세스 (3 계층)를 관리합니다. nestjs에서 통합 관리는 모든 관련 리소스를 동일한 폴더에 넣을뿐만 아니라 모듈은 관리 단위로 도입되었습니다.
- nestjs 모듈의 주요 콘텐츠 : 모듈 관리 파일, 3 계층 아키텍처 구현 파일 (controller, service, dao) 및 관련 pojo 파일 (dto, vo, bo, do)
공통 / 전역 모듈 사례
- 모듈 관리 파일
import {
Module, Global } from '@nestjs/common';
import {
CatsController } from './cats.controller';
import {
CatsService } from './cats.service';
// @Global()// 全局模块,应该只注册一次,最好由根或核心模块注册。
@Module({
controllers: [CatsController],
providers: [CatsService],
exports: [CatsService],
})
export class CatsModule {
}
2. 모듈 통합
- 루트 모듈 (app.module.ts)
import {
Module } from '@nestjs/common';
import {
CatsModule } from './cats/cats.module';
import {
DogsModule } from './dogts/dogs.module';
@Module({
imports: [CatsModule , DogsModule],
})
export class ApplicationModule {
}
3. 모듈 통신
모듈 데이터의 프라이버시 및 노출
import {
Module } from '@nestjs/common';
import {
CatsController } from './cats.controller';
import {
CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
exports: [CatsService]// 模块暴露:引入CatsModule模块的其它模块可以访问CatsService。模块私有:模块未暴露的即为私有
})
export class CatsModule {
}
모듈 간 가져 오기 및 내보내기
// 在核心模块下引入并导出公共模块
@Module({
imports: [CommonModule],
exports: [CommonModule],
})
export class CoreModule {
}