本文档全面概述了 n8n 编辑器的用户界面架构、组件和交互。它涵盖了主要的 UI 元素、它们之间的关系以及它们如何促进 n8n 中的工作流创建和管理。有关特定节点实现或 API 交互的信息,请参阅节点系统文档。
n8n 编辑器 UI 是一个基于 Vue.js 的单页应用程序,它提供了一个交互式环境,用于创建、编辑和管理工作流。该界面旨在促进可视化编程体验,用户可以通过连接节点来创建自动化工作流。
UI 架构遵循基于组件的方法,并使用 Pinia store 进行状态管理。主视图是 NodeView,其中包含用于可视化构建工作流的 Canvas,并提供对 Node Details View (NDV) 的访问,用于配置各个节点。
来源
工作流画布是用户通过添加、连接和排列节点来构建工作流的中心界面。
画布上的节点代表工作流中的特定操作或触发器。它们可以是
每个节点都有
用户可以通过多种方式与画布进行交互
画布支持各种导航控件
来源
节点详情视图 (NDV) 是打开节点进行编辑时出现的模态界面。它提供了一个全面的界面来配置节点参数和查看输入/输出数据。
NDV 分为三个主要部分
参数部分提供了配置节点行为的界面
parameterInput)nodeCredentialsSelect)resourceLocator)inlineExpressionEditor)codeEditorFullscreen)输入和输出面板显示通过节点流动的数据
用户可以
来源
Schema 视图提供工作流中流动数据的结构化表示,允许用户理解数据结构和关系。
Virtual Schema 组件用于在 NDV 中可视化数据结构。它提供
Schema 视图的关键功能包括
用户可以通过多种方式与数据进行交互
来源
节点创建器是向工作流添加新节点的界面。它提供了一个可搜索的可用节点类型和模板目录。
可以通过以下几种方式访问节点创建器
canvasPlusButton)canvasNodePlusEndpoint)contextMenuAction)节点创建器打开的来源记录在 NODE_CREATOR_OPEN_SOURCES 常量中。
用户可以通过以下方式查找和选择节点
选择后,节点可以
来源
n8n UI 提供了各种交互式元素和控件来管理工作流和节点配置。
该界面支持大量键盘快捷键,以实现高效的工作流管理
| 快捷键 | 操作 | 实现 |
|---|---|---|
| Ctrl/Cmd+S | 保存工作流 | 保存工作流 |
| Ctrl/Cmd+Enter | 执行工作流 | 执行工作流 |
| Ctrl/Cmd+Z | 撤销 | 撤销 |
| Ctrl/Cmd+Shift+Z | 重做 | 重做 |
| Ctrl/Cmd+A | 全选节点 | 全选 |
| Ctrl/Cmd+D | 复制节点 | 复制节点 |
| Delete/Backspace | 删除选定节点 | 删除节点 |
| D | 禁用选定节点 | 禁用节点快捷方式 |
| P | 固定选定节点 | 固定节点快捷方式 |
| Shift+S | 添加便签 | 添加便签 |
上下文菜单提供对基于所选元素的进行的访问
上下文菜单通过 openContextMenu() 和 contextMenuAction() 函数实现。
界面各处广泛使用拖放功能。
drag() 和 moveNode() 在画布上移动节点draganddrop() 在节点之间创建连接mapDataFromHeader()可能导致数据丢失的重要操作会显示确认对话框。
acceptConfirmModal()beforeUnloadEventBindings来源
n8n UI 使用 Vue.js 和组件化架构构建。关键组件被组织起来,提供模块化且易于维护的代码库。
UI 组件与各种 Pinia store 交互以进行状态管理。
| Store | 目的 | 关键函数 |
|---|---|---|
| useWorkflowsStore | 管理工作流数据 | getCurrentWorkflow(), saveCurrentWorkflow() |
| useNodeTypesStore | 提供节点定义 | getNodeType(), getNodeTypeDescription() |
| useUIStore | 控制 UI 状态 | openModal(), closeModal() |
| useNDVStore | 管理 NDV 状态 | activeNode, setPanelDisplayMode() |
| useCanvasStore | 处理画布状态 | canvasNodes, canvasConnections |
| useExecutionsStore | 管理执行 | getExecutionData(), activeExecution |
组件通过多种机制进行通信:
nodeViewEventBus 和 canvasEventBus,用于跨组件事件。useRunWorkflow 和 useCanvasOperations,用于共享功能。UI 组件通过 Cypress 端到端测试进行测试,以验证:
来源
n8n UI 支持自定义和可视化功能,以增强工作流的可读性和用户体验。
便签提供了一种直接在工作流画布上添加文档的方法。
hitAddSticky() 或通过上下文菜单添加便签。toggleColorPalette())editSticky() 函数编辑内容便签功能是通过 STICKY_NODE_TYPE 常量和相关操作实现的。
节点具有不同状态的视觉指示器:
| 状态管理 | 视觉指示器 | 实现 |
|---|---|---|
| 活动/非活动 | 激活器开关 | isWorkflowActivated() |
| 执行成功 | 绿色指示器 | nodeRunSuccessIndicator |
| 执行错误 | 红色指示器 | nodeRunErrorIndicator |
| 选中 | 高亮边框 | selectedNodes() |
| 已禁用 | 淡入效果 | disabledNodes() |
| 固定数据 | 图钉图标 | pinnedDataButton |
画布提供了多种可视化控件:
zoomInButton()、zoomOutButton()、resetZoomButton())zoomToFit() 函数排列节点来源
n8n UI 实现了支持可访问性和国际化的功能。
UI 使用支持多种语言的翻译系统。
界面支持键盘导航,以提高可访问性。
来源
n8n 用户界面通过可视化编程方法提供了一个全面的环境,用于创建、编辑和管理工作流。模块化的组件架构、直观的交互和强大的数据可视化功能使用户能够高效地构建复杂自动化工作流。
UI 组件无缝协作,提供一致的体验,从向画布添加节点到配置参数和可视化数据流。广泛的测试覆盖确保了界面功能的可靠性。