SuperAPI AI 工具集

objectstack-hooks

编程与开发

查看项目

更新于 10-16 02:35

技能介绍

用途:本技能是 ObjectStack 中所有钩子与事件文档的唯一权威来源,整合数据生命周期、插件系统与内核事件三类钩子模式,避免重复并保持一致性。适用于理解完整钩子架构、实现数据生命周期钩子(beforeInsert、afterUpdate 等)、使用插件钩子(kernel:ready、data:*、自定义事件)、对比数据钩子与插件钩子、设计基于钩子的集成或扩展、参考最佳实践与常见模式。

主要能力与组织:技能分为两份参考文档。1)数据生命周期钩子 → references/data-hooks.md,涵盖 14 个生命周期事件(beforeFind、afterFind、beforeInsert、afterInsert 等)、钩子定义 schema 与 HookContext API、注册方式(声明式、编程式、基于文件)、常见模式(校验、默认值、审计日志、工作流)、性能考量与最佳实践、完整代码示例与测试策略;用于对象级业务逻辑、校验、数据增强、CRUD 副作用。2)插件与内核钩子 → references/plugin-hooks.md,涵盖内核生命周期钩子(kernel:ready、kernel:shutdown)、插件事件系统(ctx.hook、ctx.trigger)、内置数据事件(data:beforeInsert、data:afterInsert 等)、自定义插件事件与命名空间、处理函数模式与错误处理、跨插件通信;用于插件开发、内核事件、跨插件通信、系统级钩子。

两类钩子对比:数据钩子定义在对象元数据(Stack)中,通过 stack 配置里的 hooks: [...] 注册,使用含 input/result/api 的丰富 HookContext,作用域为对象特定或全局(object: '*'),有显式 priority 字段,适合绑定对象的业务逻辑;插件钩子在插件代码(init/start)中通过 ctx.hook() 注册,参数按事件灵活传递,全局跨所有对象,顺序由插件依赖决定,适合系统集成与横切关注点。

必要用法示例(保持原样):数据钩子 import { Hook, HookContext } from '@objectstack/spec/data'; 插件钩子使用 ctx.hook('kernel:ready', async () => {...}) 与 ctx.hook('data:afterInsert', async (objectName, record, result) => {...})。

关联:objectstack-schema 使用数据钩子处理对象生命周期,objectstack-plugin 使用插件钩子做内核集成,objectstack-automation 的流程可通过钩子触发。目录结构为 SKILL.md 加 references/ 下的 data-hooks.md 与 plugin-hooks.md。

限制:资料未提供具体安装命令、收费与价格、支持平台、运行环境要求及实际效果说明,暂未提供。