跳转到内容

Module

模块系统将应用功能拆分为独立单元,每个模块可拥有自己的路由、服务和生命周期钩子。

import { defineModule } from "@ventostack/core";
const userModule = defineModule({
name: "users",
routes(router) {
router.get("/users", (ctx) => ctx.json([{ id: 1 }]));
router.post("/users", (ctx) => ctx.json({ created: true }));
},
services: {
userService: { findAll: () => [], findById: (id) => ({}) },
},
async onInit() {
console.log("用户模块已初始化");
},
async onDestroy() {
console.log("用户模块已销毁");
},
});
import { createModuleRegistry } from "@ventostack/core";
const registry = createModuleRegistry();
const app = createApp();
registry.register(userModule);
registry.register(orderModule);
// 初始化所有模块
await registry.initAll();
// 将模块路由应用到路由器
registry.applyRoutes(app.router);
// 优雅关闭时销毁
await registry.destroyAll();

通过 disabled 标记跳过注册:

const betaModule = defineModule({
name: "beta-features",
disabled: true, // 不会被注册
routes(router) { /* ... */ },
});
registry.getModule("users"); // 获取指定模块
registry.listModules(); // 列出所有模块
属性类型说明
namestring模块名称(必填)
disabledboolean是否禁用
routes(router) => void路由注册函数
servicesRecord<string, unknown>模块服务集合
onInit() => void | Promise<void>初始化钩子
onDestroy() => void | Promise<void>销毁钩子
方法说明
register(module)注册模块(disabled 模块会被跳过)
getModule(name)获取指定模块
listModules()列出所有已注册模块
initAll()按注册顺序初始化所有模块
destroyAll()按逆序销毁所有模块
applyRoutes(router)将所有模块路由应用到路由器