用途:为 ComfyUI 自定义节点编写前端 JavaScript 扩展,通过注册钩子、控件、命令、设置与 UI 组件来扩展界面。
主要能力:在 Python 中导出 WEB_DIRECTORY = "./js" 后,目录内所有 .js 文件会在 ComfyUI 启动时自动加载。扩展通过 app.registerExtension 注册,支持生命周期钩子(init、addCustomNodeDefs、getCustomWidgets、beforeRegisterNodeDef、nodeCreated、setup、loadedGraphNode、registerCustomNodes、beforeRegisterVueAppNodeDefs、beforeConfigureGraph、afterConfigureGraph、getSelectionToolboxCommands、onNodeOutputsUpdated)以及认证钩子。可添加 DOM 控件与控件钩子(beforeQueued、afterQueued、serializeValue),声明式注册命令、快捷键、设置(boolean、number、slider、knob、combo、radio、text、image、color、url、hidden、backgroundImage)、侧边栏与底部面板标签、菜单命令、关于页与顶栏徽章、操作栏按钮。支持监听 API 事件(executed、progress、execution_start、execution_success、execution_error、status),通过 PromptServer.instance.send_sync 实现服务端到客户端通信,以及 toast 提示、确认/输入对话框、设置读写、错误读取、Markdown 渲染和画布/节点右键菜单项。
使用方式:从 ../../scripts/app.js 与 ../../scripts/api.js 导入,符号也可通过 window.comfyAPI.<module>.<export> 访问。
限制:scripts/app 与 scripts/api 为稳定公共 API,scripts/widgets、domWidget、utils 等为内部模块可能变动,scripts/ui 已弃用。前端 1.4x 起有破坏性变更:组节点移除、LiteGraph.use_uuids 移除、LGraph.onGetNodeMenuOptions 移除、IBaseWidget.entityId 移除、node.size 改为 Proxy 支持。具体版本与完整 API 细节暂未提供。