主界面修改及代理模块初始化

This commit is contained in:
zhongluofeng
2026-07-15 18:22:07 +08:00
parent 29a5f456cb
commit fb361aff9a
39 changed files with 4768 additions and 396 deletions
+56 -10
View File
@@ -66,12 +66,12 @@ Thing/
### 第一阶段:主体架构(当前阶段)
- [x] 项目初始化
- [ ] 主界面布局(左侧模块导航 + 右侧内容区域)
- [ ] 基础设置模块(主题切换、开机自启、语言设置
- [ ] 系统托盘(Tray
- [ ] 日志系统(Log
- [ ] 进程管理架构(子进程生命周期管理)
- [ ] 模块注册机制
- [x] 主界面布局(左侧模块导航 + 右侧内容区域)
- [x] 基础设置模块(主题切换、开机自启)
- [x] 系统托盘基础Tray
- [x] 日志系统(Log
- [x] 进程管理架构(子进程生命周期管理)
- [x] 模块注册机制
### 第二阶段:核心模块开发
@@ -127,11 +127,57 @@ Thing/
## 模块管理架构
项目采用模块化架构,每个模块独立开发,通过统一的注册机制接入主界面
项目采用统一的模块注册机制,每个模块通过 `index.ts` 自描述其配置,由中央注册表统一管理
1. **左侧导航栏**:显示所有已注册模块的名称和图标
2. **右侧内容区域**:显示当前选中模块的详细设置和功能界面
3. **模块注册**:通过配置文件或代码注册模块信息(名称、图标、组件路径、权限等)
### 核心文件
| 文件 | 职责 |
|------|------|
| `src/types/module.ts` | 模块配置类型定义(`ModuleConfig``ModuleMeta``ModuleProcessConfig` 等) |
| `src/modules/registry.ts` | 模块注册表单例,提供注册、查询、组件懒加载等功能 |
| `src/modules/index.ts` | 模块聚合入口,导入并注册所有模块 |
| `src/modules/icons.ts` | 模块图标映射表 |
| `src/modules/<name>/index.ts` | 各模块的配置声明(名称、图标、组件、搜索项、进程配置等) |
### 模块配置示例
```typescript
// src/modules/proxy/index.ts
export const moduleConfig: ModuleConfig = {
id: 'proxy',
name: '代理管理',
icon: 'proxy',
description: '系统代理切换、订阅管理与延迟测速',
category: 'network',
loader: () => import('./ProxyModule.vue'),
searchItems: [...],
process: {
name: 'mihomo',
executable: '',
autoStart: false,
restartOnCrash: true,
maxRestarts: 3
},
order: 10
}
```
### 进程管理架构
需要管理外部子进程的模块(如代理的 mihomo、下载器的 aria2)通过 `ModuleProcessConfig` 声明进程配置,由 Rust 端的 `ProcessManager` 统一管理生命周期:
- **Rust 端** (`src-tauri/src/process_manager.rs`):管理子进程的启动、停止、重启和崩溃检测
- **前端** (`src/stores/processStore.ts`)Pinia store,通过 Tauri IPC 调用 Rust 命令,监听进程状态变更事件
- **后台监控线程**:每 3 秒检查进程状态,崩溃时自动重启(可配置),并通过 Tauri 事件通知前端
- **应用退出清理**:退出时自动停止所有子进程
### 新增模块流程
1. 创建 `src/modules/<name>/` 目录,编写 `ModuleComponent.vue``index.ts`
2.`index.ts` 中导出 `moduleConfig: ModuleConfig`
3.`src/modules/index.ts` 中添加导入
4.`src/modules/icons.ts` 中添加图标映射
5. 如需 Rust 命令,在 `src-tauri/src/` 中创建对应模块
## 构建与运行