跳转到主要内容

概述

子图让用户可以将节点分组为可复用、可嵌套的组件。每个子图都是一个独立的 LGraph,带有 UUID。面向用户的指南请参阅子图

节点标识符

ComfyUI 使用三种不同的节点标识符类型。使用了错误的类型会导致静默失败。 从扩展内部构造节点的定位器 ID:

遍历节点

仅当前层级

递归遍历所有节点

要进入嵌套子图,使用递归辅助函数,对每个节点调用回调:
完整示例:

根图与当前活动图

事件

子图层级事件

通过 subgraph.events 分发:

画布层级事件

通过 app.canvas.canvas(HTML canvas 元素)分发:

监听模式

控件提升

SubgraphInput 连接到子图内部的某个控件时,该控件的一个副本会出现在父级子图节点上。这会触发 widget-promoted 事件。断开连接则会触发 widget-demoted
控件提升行为仍在演进中,未来版本可能会发生变化。

清理

使用 AbortController 在节点被移除时清理所有事件监听器。
onRemoved 不仅会在删除时触发,也可能在子图转换时触发。如果需要在重构过程中保留状态,请对销毁逻辑进行防护。

参见