NodeLibrary
NodeLibrary
该笔记旧文件名:NodeEditor_Web
节点编辑库调研 (2024-10-12)
开源调研
url  | Pic  | Language  | Star  | 
|---|---|---|---|
  | TypeScript、Svelte、CSS、JavaScript  | 25.2k  | |
  | TypeScript、Vue、CSS、Other  | 3.9k  | |
  | JavaScript、CSS、Less、Vue、HTML  | 4.4k  | |
  | TypeScript、JavaScript、Other  | 5.7k  | |
  | JavaScript、Vue、HTML、CSS  | 19  | |
——  | TypeScript、Vue、CSS、Other  | 511  | |
  | TypeScript、Less、JavaScript  | 2  | |
  | TypeScript、Vue、JavaScript、Less、HTML、CSS  | 6  | |
  | TypeScript、HTML、CSS  | 18  | |
  | TypeScript、Vue、SCSS、JavaScript、HTML  | 26  | |
  | C++、CMake  | 3.7k  | |
  | Python、JupyterNotebook、Dockerfile  | 483  | |
  | C#  | 511  | |
  | C#  | 3.3k  | |
  | C#  | 2k  | |
  | JavaScript、CSS、HTML  | 3  | |
  | JavaScript、HTML  | 3  | |
  | C++、Other,Qt  | 73  | |
  | Python,PyQt  | 189  | |
  | C++、CMake,Qt,这是一个可复用的框架!  | 3k  | |
  | Python、Inno Setup、Other  | 42  | |
  | C#  | 610  | |
  | Python,Base PyFlow  | 77  | |
  | C#、PowerShell、Shell、Batchfile  | ||
  | Python  | 644  | 
其中,有些可复用的节点库:
- https://github.com/antvis/g6 ,G6引擎相关的:
 - https://wonderworks-software.github.io/PyFlow/ ,PyFlow
 - https://github.com/paceholder/nodeeditor
 - xyflow/reactflow/svelteflow
- TypeScript、Svelte、CSS、JavaScript,这个不错,同时支持react和svelte!
那有没有Vue的?在该仓库的issue中有人提到过:X6、G6、butterfly、vueflow、Rete.js 
 - TypeScript、Svelte、CSS、JavaScript,这个不错,同时支持react和svelte!
 - vueflow 
- 其中元素拖拽移动的底层引擎是D3
 
 
非开源调研
使用节点编辑器的大规模软件:
- Blender、非常多的现代渲染器、UE、Houdini、达芬奇
 - https://github.com/hoffstadt/DearPyGui
 
选型过程中的一些思考:
在线节点编辑器:
- https://nme.babylonjs.com/
 - https://github.com/bcakmakoglu/vue-flow
 - https://github.com/xyflow/xyflow
 - http://x6.antv.antgroup.com/zh/examples/showcase/practices/#er
 
工作流引擎调研
工作流只是节点图的其中一个应用
GPT:
工作流引擎(Workflow Engine)是一种软件组件,它负责自动化业务流程中的步骤。这些步骤可以包括任务分配、状态跟踪以及条件判断等,它按照预定的规则自动推进流程。工作流引擎通常遵循某种工作流定义,这个定义可以是一个流程图或者是一个结构化的文档,它描述了工作流中的各个步骤(节点)以及它们之间的关系。
节点图(Node Diagram)是描述工作流的一种可视化方式,它通常包含以下几个要素:
节点(Nodes):代表工作流中的各个步骤或者任务。节点可以有不同的类型,比如开始节点、结束节点、活动节点、网关节点等。
边(Edges):连接不同节点的线段,表示一个节点完成之后执行流如何转移到另一个节点。
属性(Properties):每个节点可能有特定的属性来定义它的行为,例如执行的条件、执行的动作等。
在工作流引擎中,节点图通常用来定义和展示工作流逻辑。当工作流引擎运行时,它会解析节点图,并根据图中的定义来决定下一步应该做什么。例如,如果当前节点是一个条件判断节点,那么工作流引擎会评估该条件,并决定是否转移到下一个节点,或者转移到另一个分支。
总结来说,节点图是描述工作流逻辑的一种方式,而工作流引擎则是实现这个逻辑的执行者。工作流引擎依赖于节点图来指导其操作顺序和条件处理,从而实现自动化的工作流管理。
前司以前好像想弄一个CRM系统来着,好像选型用jBPM
最终选型
Github Star History Comparison


四选一:
- 就效果来说,ReactFlow/SvelteFlow/VueFlow 深得我心,特别是交互式文档!太爽了!最近更新:几天前
 - X6的效果感觉有点差,而且本职不是专门做节点图的。最近更新:昨天
 - butterfly虽然本职不是专做节点图,但效果感觉还行。只是他那个网站502了。最近更新:23年8月了,没维护了,怪不得Star增长这么慢
 
二选一:
- 社区 
- ReactFlow/SvelteFlow,需要注意的是,这里有可选的Pro版本,Pro版本新增的功能可以在Examples页面中看到。例如我非常想要的 Group 功能
 - VueFlow,能用Vue不错。但ReactFlow的用户数是增长率非常高……
 - 都有Discord群,都没中文文档
 
 - 功能上 
- 我大致阅读了两边的使用文档
(https://vueflow.dev/examples/math.html 和 https://reactflow.dev/examples/nodes/custom-node)
功能感觉相差不多,在我的需求中,ReactFlow多了个Group功能,但那个要Pro版本
(后来我看了下https://github.com/bcakmakoglu/vue-flow/issues/15,Vue的版本似乎也能有该功能?) - 用法区别(待研究)
 
 - 我大致阅读了两边的使用文档
 - 联系 
- VueFlow的作者 
@backmakoglu也是ReactFlow的主要贡献者之一,似乎是react-flow项目的迁移。两者在网站主页和Example页面中的展示,都非常相似 
 - VueFlow的作者 
 
最后选定,使用VueFlow了
开发
核心功能
- 节点编辑器的基础功能
 - 必须实现无pos的自动定位(记得Houdini有这个功能)
 - 必须实现在json中进行定义的自定义节点
 























