- 新增 API 模块统一封装所有 IPC 调用,提高代码可维护性 - 创建 `src/types/index.ts` 集中定义核心业务类型(Game, NodeConfig 等) - 新增组合式函数 `useFilePicker`、`useGameScanner` 和 `useAppUpdater` 以复用逻辑 - 改进设置页面,新增侧边栏导航和多个设置模块(通用、网络、日志、关于) - 优化本地代理逻辑,增加节点列表变化监听和自动重启机制 - 扩展协议解析测试用例,覆盖更多 VMess、VLESS Reality 等场景 - 更新项目结构文档 `docs/src-structure.md` 说明模块职责 - 修复 Electron 主进程预加载路径兼容性问题
4.8 KiB
4.8 KiB
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 和后端扫描接口,处理扫描进度和结果展示。