Files
LagZero/docs/src-structure.md
T
ZenEcho c2bb7e6ed8 feat: 重构前端代码结构并增强类型定义
- 新增 API 模块统一封装所有 IPC 调用,提高代码可维护性
- 创建 `src/types/index.ts` 集中定义核心业务类型(Game, NodeConfig 等)
- 新增组合式函数 `useFilePicker`、`useGameScanner` 和 `useAppUpdater` 以复用逻辑
- 改进设置页面,新增侧边栏导航和多个设置模块(通用、网络、日志、关于)
- 优化本地代理逻辑,增加节点列表变化监听和自动重启机制
- 扩展协议解析测试用例,覆盖更多 VMess、VLESS Reality 等场景
- 更新项目结构文档 `docs/src-structure.md` 说明模块职责
- 修复 Electron 主进程预加载路径兼容性问题
2026-02-19 20:16:55 +08:00

93 lines
4.8 KiB
Markdown

# Frontend (Vue) 项目结构说明
本文档详细描述了 `src/` 目录下的代码结构与模块功能。本项目采用 **Vue 3 + TypeScript + Vite** 技术栈,使用 **Composition API** 和 **Pinia** 进行状态管理。
## 目录树
```
src/
├── api/ # [接口层] 后端通信接口 (IPC 封装)
│ ├── index.ts # 统一导出所有 API 模块
│ └── *.ts # 各业务模块 API (如 games.ts, nodes.ts, singbox.ts)
│
├── assets/ # [资源层] 静态资源文件
│ ├── main.css # 全局样式入口
│ └── style.css # 基础样式定义
│
├── autoImport/ # [自动导入] 自动生成的类型声明
│ ├── auto-imports.d.ts # 自动导入函数的类型声明
│ └── components.d.ts # 自动导入组件的类型声明
│
├── components/ # [组件层] Vue 组件
│ ├── common/ # 通用基础组件 (图标选择器、主题切换等)
│ ├── dashboard/ # 仪表盘相关组件 (图表、节点选择器)
│ ├── library/ # 游戏库相关组件 (分类管理、编辑弹窗)
│ ├── node/ # 节点管理相关组件 (节点卡片、编辑/导入弹窗)
│ └── settings/ # 设置页面相关组件 (侧边栏、各设置模块)
│
├── composables/ # [逻辑层] 组合式函数 (Hooks)
│ ├── useAppUpdater.ts # 应用更新逻辑
│ ├── useFilePicker.ts # 文件选择逻辑
│ ├── useGameScanner.ts # 游戏扫描逻辑
│ └── useTheme.ts # 主题切换逻辑
│
├── constants/ # [常量层] 全局常量定义
│ └── index.ts # 常量统一导出
│
├── layouts/ # [布局层] 页面布局组件
│ └── MainLayout.vue # 主布局 (侧边栏 + 内容区)
│
├── locales/ # [国际化] i18n 语言包
│ ├── en-US.json # 英文翻译
│ └── zh-CN.json # 中文翻译
│
├── router/ # [路由层] 路由配置
│ └── index.ts # Vue Router 配置 (定义路由表)
│
├── stores/ # [状态层] Pinia 状态管理
│ ├── index.ts # Pinia 实例导出
│ ├── games.ts # 游戏数据状态
│ ├── nodes.ts # 节点数据状态
│ ├── settings.ts # 应用设置状态
│ └── local-proxy.ts # 本地代理状态
│
├── types/ # [类型层] TypeScript 类型定义
│ ├── electron.d.ts # Electron API 类型扩展
│ └── index.ts # 核心业务类型定义 (Game, NodeConfig 等)
│
├── utils/ # [工具层] 通用工具函数
│ ├── latency-session.ts # 延迟测试会话管理
│ ├── protocol.ts # 代理协议解析工具 (VMess, SS, VLESS 等)
│ ├── runtime-logger.ts # 运行时日志捕获工具
│ └── singbox-config.ts # sing-box 配置文件生成器
│
├── views/ # [视图层] 页面级组件
│ ├── dashboard/ # 仪表盘页面
│ ├── library/ # 游戏库页面
│ ├── nodes/ # 节点列表页面
│ └── settings/ # 设置中心页面
│
├── App.vue # 应用根组件
├── main.ts # 应用入口文件 (挂载 Vue, Pinia, Router)
└── vite-env.d.ts # Vite 环境类型声明
```
## 模块详细说明
### 1. 接口层 (`api/`)
- **IPC 封装**: 所有与 Electron 主进程的通信都通过 `window.electron` 等预加载脚本暴露的对象进行。
- **模块化**: 每个文件对应后端的 Service 模块,例如 `singbox.ts` 对应后端的 `SingboxService`。
### 2. 状态层 (`stores/`)
- **`games.ts`**: 管理本地游戏列表、当前选中游戏、加速状态。
- **`nodes.ts`**: 管理节点列表、节点延迟测试结果。
- **`settings.ts`**: 持久化存储用户设置(语言、主题、DNS 模式等)。
### 3. 工具层 (`utils/`)
- **`protocol.ts`**: 核心协议解析逻辑,负责将分享链接 (vmess://, ss://) 解析为标准节点配置对象。
- **`singbox-config.ts`**: 根据当前游戏规则和选中的节点,动态生成 sing-box 的 JSON 配置文件。
### 4. 逻辑层 (`composables/`)
- **Composition API**: 封装可复用的业务逻辑,例如 `useTheme.ts` 处理深色模式切换和主题色应用。
- **`useGameScanner.ts`**: 协调前端 UI 和后端扫描接口,处理扫描进度和结果展示。