JS后端框架 Nest.js入门篇 多模块应用结构、Module(三)

注:此文仅记录博主初次学习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.模块划分和定义

模块划分
  • 划分原则:后端通常对一个业务对象的增删改查等操作的完整业务流程(三层)进行统一管理,在nestjs中,统一管理不仅仅是将相关的所有资源放入同一个文件夹,而且引入了模块作为管理单位。
  • nestjs模块主要内容:模块管理文件、三层架构实现文件(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