菜单

前端架构

相关源文件

本文档涵盖了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组件架构

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架构和请求处理

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