# 新增 Flow 节点模板(基于当前重构版本) 这份模板按你现在的代码结构整理,目标是:**新增节点只改最少文件**。 --- ## 1. 最小接入步骤 新增一个普通节点(非 LOOP)通常只要 3 步: 1. 新建节点组件(可先复用 `LocalNode` 风格) 2. 在 `nodeRegistry` 注册类型映射 3. 在节点配置源(`localNodeData`)增加定义 > `useFlowCallbacks` 已统一走 `resolveNodeDefinition + buildRuntimeNode + ensureNodeTypeRegistered`,不需要再在多个入口手写创建逻辑。 --- ## 2. 模板代码 ### 2.1 新建节点组件 **路径示例**:`src/components/FlowEditor/node/httpNode/HttpNode.tsx` ```tsx import React from 'react'; import LocalNode from '@/components/FlowEditor/node/localNode/LocalNode'; const HttpNode = (props: any) => { // 第一版可以直接复用 LocalNode 渲染行为 return ; }; export default HttpNode; ``` --- ### 2.2 注册节点类型映射(关键) **文件**:`src/utils/flow/nodeRegistry.ts` ```ts import HttpNode from '@/components/FlowEditor/node/httpNode/HttpNode'; export const resolveNodeComponent = (nodeType: string) => { switch (nodeType) { // ...已有 case case 'HTTP': return HttpNode; default: return LocalNode; } }; ``` --- ### 2.3 增加节点定义(用于菜单与创建) **文件**:`src/pages/flowEditor/sideBar/config/localNodeData.ts` ```ts export const localNodeData = [ // ...已有节点 { nodeType: 'HTTP', nodeName: 'HTTP请求', data: { title: 'HTTP请求', type: 'HTTP', parameters: { apiIns: [{ name: 'start', desc: '', dataType: '', defaultValue: '' }], apiOuts: [{ name: 'done', desc: '', dataType: '', defaultValue: '' }], dataIns: [], dataOuts: [], }, component: { type: 'HTTP', customDef: '{}', }, }, }, ]; ``` --- ## 3. 可选:节点专用编辑器 如果你希望配置面板是独立 UI,再补: 1. 新建编辑器组件(`src/components/FlowEditor/nodeEditors/...`) 2. 在编辑器路由/映射处按 `nodeType` 挂载 不做这一步也能先跑通新增节点。 --- ## 4. 当前推荐的接入方式 新增节点时不要再手写分散逻辑,优先复用: - `resolveNodeDefinition(...)` - `buildRuntimeNode(...)` - `ensureNodeTypeRegistered(...)` 这些已覆盖: - 侧栏拖拽到画布(onDrop) - 画布空白处添加(addNodeOnPane) - 在边上插入节点(addNodeOnEdge)