用途:本技能整理 ThatOpen 组件系统的语法与使用模式,提供精确的方法签名、生命周期接口契约、事件系统 API 与响应式集合模式,适用于访问 ThatOpen 组件、实现自定义组件以及处理组件生命周期与事件系统的场景。架构概览与设计理由见 thatopen-core-architecture。
主要能力与用法:组件实例必须通过单例注册表获取,即 components.get(OBC.Worlds) 等;首次调用会在内部执行 new ComponentClass(components) 并调用 components.add(ComponentClass.uuid, this) 注册,后续返回缓存实例。禁止直接调用 new OBC.Worlds(components),否则会绕过注册表产生未跟踪的重复实例。世界设置完成后必须调用 components.init() 启动 requestAnimationFrame 循环,否则不渲染且可更新组件不会收到更新;清理时必须调用 components.dispose(),其中 FragmentsManager 始终最后释放,释放后不得再使用任何组件引用。
自定义组件需遵循固定模式:定义 as const 的静态唯一 uuid、初始化 enabled、构造函数中 super(components) 后调用 components.add()、按需实现 Disposable、在 dispose() 中置 enabled=false 并触发 onDisposed 后 reset 事件。组件通过实现 Disposable、Updateable、Configurable、Resizeable、Hideable、Createable、Serializable 等接口选择行为。Configurable 组件使用前必须先 setup() 并检查 isSetup。运行时类型检测使用 Base 上的 is*() 方法(鸭子类型,而非 instanceof)。事件系统为 Event<T>,需保存处理函数引用以便 remove,dispose 中应对自有事件调用 reset() 防止泄漏;DataMap 与 DataSet 在标准 Map/Set 之上提供 onItemSet、onItemUpdated、onItemDeleted、onCleared 等事件。
限制与说明:版本为 @thatopen/components 3.3.x,API 签名依据 GitHub ThatOpen/engine_components 主分支(packages/core/src/)与 npm @thatopen/components@3.3.3 核对。事件处理按注册顺序触发但不应依赖其顺序。参考资料包括 references/methods.md、references/examples.md、references/anti-patterns.md。收费、价格、平台与效果等信息暂未提供。