nestjs 使用类似midwayjs 模式加载模块

midwayjs 在不少使用上实际与nestjs 是比较类似的,midwayjs 提供了一个比较有意思的玩法,就是组件化,nestjs 当然也有自己比较强大的模块化能力

参考玩法

机制上实际比较简单,核心是代码组织以及模块的导入,因为nestjs 也是提供了ioc 能力的,核心是将我们的模块import 进去就行了,之后由nestjs 的ioc 机制进行模块加载

  • 简单玩法 入口模块
import { Module } from '@nestjs/common';
import { LoginModule } from './dynamic.module';
import { UserModule } from './user/user.module';
function loadModules() {
  const modulea = require('modulea');
  const moduleb = require('moduleb');
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
  return [modulea.default, moduleb.default];
}
@Module({
  imports: [
    ...loadModules(),
    LoginModule.register({ name: 'loginv2' }),
    LoginModule.register({ name: 'login' }),
    UserModule,
  ]
})
export class AppModule {}

  • 模块能力定义 核心就是包含controllers ,service 定义

import { Module } from '@nestjs/common';
import { ModuleAController } from './modulea.controller';
import { ModuleAService } from './modulea.service';
import { join } from 'path';
@Module({
  imports: [
  ],
  controllers: [ModuleAController],
  providers: [ModuleAService],
})
export class ModuleAModule {}

export default ModuleAModule;

说明

以上是一个简单说明,核心还是模块的组合以及导入,机制上实际与midwayjs 类似,差异在midwayjs 一些抽象包装工程化很不错,比如配置管理等,当然nestjs 也是有自己的配置管理的,但是并不如midwayjs 灵活

参考资料

https://midwayjs.org/en/

https://nestjs.com/

posted on 2025-11-26 08:00  荣锋亮  阅读(0)  评论(0)    收藏  举报

导航