UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

92 lines (81 loc) 4.48 kB
# 目录架构 LobeChat 的文件夹目录架构如下: ```bash src ├── app # Next.js App Router 实现,包含路由组和 API 路由 ├── components # 可复用的 UI 组件 ├── config # 应用的配置文件,包含客户端环境变量与服务端环境变量 ├── features # 与业务功能相关的功能模块,如 Agent 设置、插件开发弹窗等 ├── hooks # 全应用复用自定义的工具 Hooks ├── layout # 应用的布局组件,如导航栏、侧边栏等 ├── libs # 第三方集成(分析、OIDC 等) ├── locales # 国际化的语言文件 ├── server # 服务端模块和服务 ├── services # 封装的后端服务接口,如 HTTP 请求 ├── store # 用于状态管理的 zustand store ├── styles # 全局样式和 CSS-in-JS 配置 ├── types # TypeScript 的类型定义文件 └── utils # 通用的工具函数 ``` ## app `app` 目录遵循 Next.js 13+ App Router 约定,采用复杂的架构,使用 [路由组](https://nextjs.org/docs/app/building-your-application/routing/route-groups) 来组织后端服务、平台变体和应用路由: ```bash app ├── (backend)/ # 后端 API 路由和服务 │ ├── api/ # REST API 端点 │ │ ├── auth/ # 身份验证路由 │ │ └── webhooks/ # Webhook 处理器 │ ├── middleware/ # 请求中间件 │ ├── oidc/ # OpenID Connect 路由 │ ├── trpc/ # tRPC API 端点 │ │ ├── async/ # 异步 tRPC 路由 │ │ ├── desktop/ # 桌面端专用 tRPC 路由 │ │ ├── edge/ # Edge 运行时 tRPC 路由 │ │ ├── lambda/ # Lambda tRPC 路由 │ │ └── tools/ # 工具 tRPC 路由 │ └── webapi/ # Web API 端点 │ ├── chat/ # 聊天相关 API │ ├── models/ # 模型管理 API │ ├── tts/ # 文本转语音 API │ └── ... ├── [variants]/ # 平台和设备变体 │ ├── (auth)/ # 身份验证页面 │ │ ├── login/ │ │ ├── signup/ │ │ └── next-auth/ │ ├── (main)/ # 主应用路由 │ │ ├── (mobile)/ # 移动端专用路由 │ │ │ └── me/ # 移动端个人资料页面 │ │ ├── _layout/ # 布局组件 │ │ ├── chat/ # 聊天界面 │ │ ├── discover/ # 发现页面 │ │ ├── files/ # 文件管理 │ │ ├── image/ # 图像生成 │ │ ├── profile/ # 用户资料 │ │ ├── repos/ # 仓库管理 │ │ └── settings/ # 应用设置 │ └── @modal/ # 并行模态框路由 │ ├── (.)changelog/ │ └── _layout/ ├── desktop/ # 桌面端专用路由 │ └── devtools/ ├── manifest.ts # PWA 清单 ├── robots.tsx # Robots.txt 生成 ├── sitemap.tsx # 站点地图生成 └── sw.ts # Service Worker ``` ### 架构说明 **路由组:** - `(backend)` - 包含所有服务端 API 路由、中间件和后端服务 - `[variants]` - 处理不同平台变体和主应用页面的动态路由组 - `@modal` - 使用 Next.js 并行路由的模态框对话框并行路由 **平台组织:** - 架构通过路由组织支持多个平台(Web、桌面端、移动端) - 桌面端专用路由位于 `desktop/` 目录中 - 移动端专用路由组织在 `(main)/(mobile)/` 下 - 共享布局和组件位于 `_layout/` 目录中 **API 架构:** - `(backend)/api/` 和 `(backend)/webapi/` 中的 REST API - 按运行时环境组织的 tRPC 端点(edge、lambdaasync、desktop) - 专用路由组中的身份验证和 OIDC 处理 这种架构在保持不同部署目标和运行时环境灵活性的同时,提供了清晰的关注点分离。