Hooks
createHookRegistry 提供了轻量级事件 Hook 注册表,支持 on、once、emit、off 操作。
import { createHookRegistry } from "@ventostack/core";
const hooks = createHookRegistry();
// 注册监听const unsubscribe = hooks.on("user:created", (data) => { console.log("新用户:", data.name);});
// 触发 hookawait hooks.emit("user:created", { name: "Alice", id: "1" });
// 取消监听unsubscribe();使用 once 注册只触发一次的回调:
hooks.once("app:ready", (data) => { console.log("应用就绪,仅执行一次");});
await hooks.emit("app:ready", {});await hooks.emit("app:ready", {}); // 不会再触发hooks.off("user:created"); // 移除该 hook 的所有监听列出已注册 Hook
Section titled “列出已注册 Hook”hooks.hooks(); // ["user:created", "app:ready"]与模块系统集成
Section titled “与模块系统集成”在模块中使用 Hook 实现松耦合通信:
const userModule = defineModule({ name: "users", async onInit() { hooks.on("order:paid", async (order) => { await notifyUser(order.userId); }); },});HookRegistry 接口
Section titled “HookRegistry 接口”| 方法 | 说明 |
|---|---|
on(hookName, callback) | 注册监听,返回取消函数 |
once(hookName, callback) | 注册一次性监听,返回取消函数 |
emit(hookName, data) | 触发 hook,按注册顺序异步执行所有回调 |
off(hookName) | 移除指定 hook 的所有监听 |
hooks() | 列出所有已注册的 hook 名称 |
回调支持同步和异步(
void | Promise<void>),emit会按顺序await每个回调。