JS 백엔드 프레임 워크 Nest.js 소개 장 다중 모듈 애플리케이션 구조, 모듈 (3)

참고 :이 글은 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 {
    
    }

추천

출처blog.csdn.net/jw2268136570/article/details/107835711