Open Source

Vue Flow:Vue 3 高度可自定义的流程图组件

Vue Flow 是一个 Vue 3 的可自定义流程图组件,支持缩放、平移、小地图和自定义节点,灵感来自 React Flow。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
Vue Flow:Vue 3 高度可自定义的流程图组件

构建交互式基于节点的界面——无论是用于工作流程编辑器、可视化编程工具,还是数据管道设计器——都是前端开发中最具挑战性的任务之一。您需要处理缩放和平移、节点拖拽和定位、边线路由和渲染,以及图形交互的所有复杂性。Vue Flow 将 React Flow 交互模型的力量带到了 Vue 3 生态系统中,提供一个精致、高性能且深度可自定义的流程图组件。

由 bcakmakoglu 创建,Vue Flow 专为 Vue 3 的 Composition API 量身打造,利用 Vue 的响应式系统实现响应式节点更新和无缝状态管理。该库在 Vue 生态系统中获得了显著的关注,开发者用它来构建从 AI 工作流程编辑器到低代码平台再到网络拓扑可视化器的各种应用。

Vue Flow 与众不同之处在于它结合了开箱即用的功能性和深度自定义能力。您无需编写任何交互代码即可获得缩放、平移、小地图、选择、拖放和键盘快捷键。但每个视觉元素——从节点渲染到边线样式再到控件组件——都可以替换为您自己的自定义 Vue 组件。


Vue Flow 的架构如何运作?

Vue Flow 建立在一个分层架构之上,将图形状态管理、渲染和交互处理分离开来。

graph TD
    A[Vue Flow 组件] --> B[图形状态管理]
    A --> C[视口控制器]
    A --> D[交互层]
    B --> E[节点存储库]
    B --> F[边线存储库]
    C --> G[缩放与平移]
    C --> H[小地图]
    D --> I[选择]
    D --> J[拖放]
    D --> K[键盘]
    E --> L[节点渲染器]
    F --> M[边线渲染器]
    L --> N[自定义 Vue 组件]
    M --> N

状态管理层维护节点和边线的响应式存储库,视口控制器处理摄像机变换,交互层将用户输入转换为状态变更。这种分离确保自定义组件只需关心渲染,无需处理交互逻辑。


Vue Flow 支持哪些节点和边线类型?

Vue Flow 内置一组节点和边线类型,同时让创建自定义类型变得非常简单。

类型类别选项自定义能力
默认节点内置标签、图标、连接点样式属性、CSS 变量
输入节点内置单一目标连接点样式、大小、颜色
输出节点内置单一来源连接点样式、大小、颜色
自定义节点用户定义任何 Vue 3 组件完全控制渲染
贝塞尔边线内置动画、标签、标记路径、颜色、宽度
阶梯边线内置直角路径样式、动画
平滑阶梯内置圆角直角路径样式、动画
直线边线内置直线样式、动画

自定义节点是标准的 Vue 3 组件,接收节点数据作为 props,可以包含任何 HTML、子组件或交互式元素。自定义边线遵循相同的模式,可以访问源和目标节点的位置。


Vue Flow 公开哪些交互事件?

该库提供了一个全面的事件系统,涵盖每个用户交互和状态变更。

事件触发时机承载数据
nodeClick用户点击节点节点 ID、事件、位置
nodeDrag用户拖拽节点节点 ID、位置增量
edgeClick用户点击边线边线 ID、事件
connect用户创建边线源节点、目标节点
selectionChange选中的节点/边线变更选中 ID 数组
viewportChange缩放或平移变更缩放级别、中心位置
nodeDoubleClick用户双击节点节点 ID、事件
nodesChange任何节点变更变更类型和数据
edgesChange任何边线变更变更类型和数据

事件遵循 Vue 3 的 emit 模式,可以在模板中使用标准的 @event 语法处理。事件承载数据以 TypeScript 类型化,使与类型安全代码库的集成变得简单直接。


如何在 Vue Flow 中创建自定义节点?

创建自定义节点是 Vue Flow 应用程序中最常见的扩展点,而该库使其非常简单。

自定义方面Vue Flow 方法示例
节点渲染自定义 Vue 3 组件包含任何 HTML 的 <template>
节点数据类型化 props 接口defineProps<NodeProps>()
节点连接点<Handle /> 组件位置、类型、样式
节点连接可配置的连接点类型源/目标、多个连接点
节点调整大小调整大小指令拖拽调整节点大小
节点右键菜单自定义实现右键组件
节点分组嵌套节点支持父-子节点
节点验证连接前回调拒绝无效连接

自定义节点本质上是一个标准的 Vue 3 组件,接收节点特定的 props,并可以使用 Handle 组件来定义连接点。这个熟悉的模式意味着任何 Vue 开发者都可以创建复杂的自定义节点,而无需学习新的范式。


FAQ

什么是 Vue Flow? Vue Flow 是一个为 Vue 3 设计的高度可自定义流程图组件库,灵感来自 React Flow。它提供缩放、平移、小地图、自定义节点和边线,以及完整的 TypeScript 支持,用于构建交互式基于节点的应用程序。

Vue Flow 与 React Flow 相比如何? Vue Flow 的灵感来自 React Flow,但它是为 Vue 3 的 Composition API 完全重新实现的。它提供类似的功能——自定义节点、边线、小地图、控件——并针对 Vue 的响应式系统进行了性能优化。

Vue Flow 支持哪些类型的节点和边线? Vue Flow 支持内置节点类型,包括输入、输出和默认节点。自定义节点可以创建为 Vue 3 组件。边线类型包括贝塞尔曲线、阶梯、平滑阶梯和直线,全部支持自定义样式和标记。

Vue Flow 支持触摸设备和移动设备吗? 是的,Vue Flow 包含移动设备的触摸事件处理。用户可以在平板和手机上使用触摸手势拖拽节点、平移视口和缩放。

可以使用 Vue Flow 创建哪些类型的应用程序? Vue Flow 用于可视化编程编辑器、工作流程自动化工具、聊天机器人构建器、数据管道设计器、思维导图应用程序、网络拓扑编辑器,以及任何需要交互式基于节点界面的应用程序。


延伸阅读

TAG
CATEGORIES