本文档涵盖了Langflow的前端架构,包括基于React的应用程序结构、可视化流程编辑器系统、状态管理和组件组织。前端通过一个基于节点的视觉编辑器提供了一个拖放式界面来构建AI工作流。
有关后端API和组件执行引擎的信息,请参阅后端架构。有关可视化流程构建界面的具体细节,请参阅可视化流程编辑器和节点。
Langflow前端是一个使用TypeScript构建的React应用程序,使用Vite作为构建工具,React Router用于导航。该应用程序遵循分层架构,在表示层、状态管理和API通信之间实现了清晰的隔离。
应用程序入口点和路由架构
主应用程序入口点是App.tsx,它负责设置路由器和处理全局主题管理。路由系统使用React Router,并为身份验证提供受保护的路由。
来源: src/frontend/src/App.tsx1-22 src/frontend/src/routes.tsx1-200 src/frontend/src/contexts/authContext.tsx1-125
Langflow 使用 Zustand 进行状态管理,其中多个专门的 store 处理应用程序状态的不同方面。这些 store 遵循模块化模式,每个 store 管理一个特定的域。
核心状态管理 Store
useFlowStore是管理流程编辑器状态的主要store,包括节点、边和React Flow实例。它负责节点操作、边连接和流程构建状态。
来源: src/frontend/src/stores/flowStore.ts1-600 src/frontend/src/types/zustand/flow/index.ts1-200
可视化流程编辑器基于React Flow构建,包含多个关键组件,它们协同工作以提供用于构建AI工作流的拖放界面。
流程编辑器组件层级
PageComponent是流程编辑器的主要容器,它渲染带有自定义节点类型和边类型的React Flow画布。GenericNode组件是渲染所有AI组件的主要节点类型。
来源: src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx70-646 src/frontend/src/CustomNodes/GenericNode/index.tsx1-615
GenericNode是渲染流程编辑器中单个AI组件的核心组件。它负责节点的显示、参数输入、输出和交互功能。
GenericNode状态和渲染逻辑
GenericNode管理多个本地状态,包括验证状态、更新模态框和输出选择。它根据showNode状态渲染不同的视图,并处理节点特有的交互。
来源: src/frontend/src/CustomNodes/GenericNode/index.tsx68-614 src/frontend/src/types/components/index.ts1-873
节点工具栏为流程编辑器中的每个节点提供上下文操作和控件。它包含常见操作的按钮和一个用于其他操作的下拉菜单。
节点工具栏操作系统
工具栏使用Select组件作为下拉菜单,根据节点类型和状态提供不同的操作。操作通过handleSelectChange函数处理,该函数路由到相应的处理程序。
来源: src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx1-746 src/frontend/src/modals/codeAreaModal/index.tsx1-300
前端通过一个结构化的API层与后端通信,该层包括查询钩子、突变和用于身份验证和错误处理的拦截器。
API架构和请求处理
API层使用Axios进行HTTP请求,并带有用于身份验证和错误处理的拦截器。React Query为服务器状态提供缓存和状态管理。
来源: src/frontend/src/controllers/API/api.tsx1-250 src/frontend/src/controllers/API/index.ts1-304
身份验证系统使用React Context来管理整个应用程序的用户状态和API密钥。它与后端身份验证端点集成并处理令牌管理。
身份验证上下文实现
AuthContext在整个应用程序中提供身份验证状态和操作。它管理cookie和本地存储中的令牌,并与React Query集成以获取用户数据。
来源: src/frontend/src/contexts/authContext.tsx1-125 src/frontend/src/types/contexts/auth.ts1-18
Langflow使用一个全面的模态框系统来进行各种交互,包括代码编辑、流程设置和组件共享。模态框是使用一个基础模态框组件和专门的实现构建的。
模态框系统架构
模态框系统使用一个基础模态框组件,该组件提供诸如Escape键处理和覆盖层管理等通用功能。专门的模态框使用特定的功能扩展了这个基础。
来源: src/frontend/src/modals/codeAreaModal/index.tsx1-300 src/frontend/src/modals/shareModal/index.tsx1-300 src/frontend/src/modals/exportModal/index.tsx1-150 src/frontend/src/modals/flowSettingsModal/index.tsx1-30
前端维护一个AI组件类型系统,该系统定义了它们的结构、输入、输出和渲染行为。该系统与后端组件定义紧密集成。
类型系统和组件模板
类型系统定义了AI组件的结构,包括其输入、输出和配置选项。模板为组件实例提供了运行时配置。
来源: src/frontend/src/stores/typesStore.ts src/frontend/src/types/api/index.ts1-300