240 lines
7.3 KiB
Markdown
240 lines
7.3 KiB
Markdown
# Thing
|
||
|
||
一个基于 Tauri 2 + Vue 3 的 Windows 工具集,集成多个实用功能模块。
|
||
|
||
## 技术栈
|
||
|
||
| 层次 | 技术 | 版本 |
|
||
|------|------|------|
|
||
| 框架 | Tauri | lastest(2.x) |
|
||
| 前端 | Vue | latest(3.x) |
|
||
| 前端构建 | Vite | latest(6.x) |
|
||
| 状态管理 | Pinia | latest(2.x) |
|
||
| UI 组件 | shadcn-vue | latest(2.x) |
|
||
| 语言 | TypeScript | 5.x |
|
||
| 后端 | Rust | latest |
|
||
| 包管理 | Bun | latest |
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
Thing/
|
||
├── public/ # 静态资源
|
||
├── src/
|
||
│ ├── assets/ # 前端资源
|
||
│ ├── components/ # 通用组件
|
||
│ │ ├── layout/ # 布局组件
|
||
│ │ └── ui/ # shadcn-vue UI 组件
|
||
│ ├── composables/ # Vue 组合式函数
|
||
│ ├── lib/ # 工具库(cn 等)
|
||
│ ├── modules/ # 功能模块
|
||
│ │ ├── proxy/ # 代理管理模块
|
||
│ │ ├── clipboard/ # 剪贴板增强模块
|
||
│ │ ├── screenshot/ # 截图模块
|
||
│ │ ├── monitor/ # 硬件监控模块
|
||
│ │ ├── downloader/ # 下载器模块
|
||
│ │ └── finder/ # 文件搜索模块
|
||
│ ├── stores/ # Pinia 状态管理
|
||
│ ├── types/ # TypeScript 类型定义
|
||
│ ├── App.vue # 主应用组件
|
||
│ ├── main.ts # 入口文件
|
||
│ └── assets/main.css # 全局样式
|
||
├── src-tauri/
|
||
│ ├── capabilities/ # Tauri 权限配置
|
||
│ ├── icons/ # 应用图标
|
||
│ ├── src/
|
||
│ │ ├── commands/ # Rust 命令
|
||
│ │ │ ├── proxy.rs # 代理相关命令
|
||
│ │ │ ├── clipboard.rs # 剪贴板相关命令
|
||
│ │ │ ├── screenshot.rs # 截图相关命令
|
||
│ │ │ ├── monitor.rs # 监控相关命令
|
||
│ │ │ ├── downloader.rs # 下载器相关命令
|
||
│ │ │ └── finder.rs # 文件搜索相关命令
|
||
│ │ ├── modules/ # Rust 模块逻辑
|
||
│ │ ├── utils/ # Rust 工具函数
|
||
│ │ ├── main.rs # Rust 入口
|
||
│ │ └── lib.rs # Rust 库入口
|
||
│ ├── Cargo.toml # Rust 依赖配置
|
||
│ └── tauri.conf.json # Tauri 配置
|
||
├── package.json # 前端依赖配置
|
||
├── tsconfig.json # TypeScript 配置
|
||
└── vite.config.ts # Vite 配置
|
||
```
|
||
|
||
## 开发进程规划
|
||
|
||
### 第一阶段:主体架构(当前阶段)
|
||
|
||
- [x] 项目初始化
|
||
- [x] 主界面布局(左侧模块导航 + 右侧内容区域)
|
||
- [x] 基础设置模块(主题切换、开机自启)
|
||
- [x] 系统托盘基础(Tray)
|
||
- [x] 日志系统(Log)
|
||
- [x] 进程管理架构(子进程生命周期管理)
|
||
- [x] 模块注册机制
|
||
|
||
### 第二阶段:核心模块开发
|
||
|
||
#### 🌐 代理管理
|
||
- [x] 下载/内置 mihomo (Clash.Meta) 内核集成
|
||
- [x] 系统代理切换
|
||
- [x] 规则配置管理
|
||
- [x] 延迟测速
|
||
- [x] 订阅管理
|
||
|
||
#### 📋 剪贴板增强
|
||
- [ ] 剪贴板历史记录
|
||
- [ ] 搜索功能
|
||
- [ ] 固定常用条目
|
||
- [ ] 多格式预览(文本、图片、文件)
|
||
- [ ] SQLite 存储
|
||
|
||
#### 📸 截图
|
||
- [ ] 区域截图
|
||
- [ ] 窗口截图
|
||
- [ ] 全屏截图
|
||
- [ ] 滚动截图
|
||
- [ ] 图片编辑工具
|
||
|
||
#### 📊 硬件监控
|
||
- [ ] 任务栏快捷显示
|
||
- [ ] CPU 使用率监控
|
||
- [ ] GPU 使用率监控
|
||
- [ ] 内存使用率监控
|
||
- [ ] 硬盘温度及使用率
|
||
- [ ] 传感器数据可视化
|
||
- [ ] 网速监控
|
||
|
||
#### ⬇️ 下载器
|
||
- [ ] 下载/内置 aria2 内核集成
|
||
- [ ] 接管浏览器下载,创建edge插件(Thing Extension)?
|
||
- [ ] HTTP 下载支持
|
||
- [ ] BT/磁力链接支持
|
||
- [ ] 下载任务管理(历史)
|
||
- [ ] 速度限制
|
||
- [ ] 断点续传
|
||
|
||
#### 🔍 文件 / 程序搜索
|
||
- [ ] 快速搜索弹窗(快捷键触发)
|
||
- [ ] 文件搜索(Everything SDK)
|
||
- [ ] 应用程序搜索
|
||
- [ ] 拼音模糊匹配
|
||
- [ ] 正则表达式支持
|
||
|
||
### 第三阶段:优化与完善
|
||
|
||
- [ ] 性能优化
|
||
- [ ] 错误处理与日志完善
|
||
- [ ] 用户体验优化
|
||
- [ ] 自动更新机制
|
||
- [ ] 打包发布
|
||
|
||
## 模块管理架构
|
||
|
||
项目采用统一的模块注册机制,每个模块通过 `index.ts` 自描述其配置,由中央注册表统一管理:
|
||
|
||
### 核心文件
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `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/` 中创建对应模块
|
||
|
||
## 构建与运行
|
||
|
||
### 前置依赖
|
||
|
||
- Node.js >= 18
|
||
- Rust >= 1.75
|
||
- Bun(推荐)或 npm/yarn
|
||
- Windows SDK(用于 Tauri 构建)
|
||
|
||
### 开发模式
|
||
|
||
```bash
|
||
# 安装依赖
|
||
bun install
|
||
|
||
# 启动开发服务器
|
||
bun run tauri dev
|
||
```
|
||
|
||
### 生产构建
|
||
|
||
```bash
|
||
# 构建前端
|
||
bun run build
|
||
|
||
# 构建应用
|
||
bun run tauri build
|
||
```
|
||
|
||
## 开发规范
|
||
|
||
### 代码风格
|
||
|
||
- TypeScript 代码遵循 ESLint 规则
|
||
- Rust 代码遵循 `cargo fmt` 规范
|
||
- 提交信息使用 Conventional Commits 格式
|
||
|
||
### 命名规范
|
||
|
||
- 组件:PascalCase(如 `ProxyManager.vue`)
|
||
- 函数:camelCase(如 `getSystemProxy()`)
|
||
- 文件:kebab-case(如 `proxy-manager.ts`)
|
||
- 常量:UPPER_CASE(如 `MAX_HISTORY_COUNT`)
|
||
|
||
### 分支策略
|
||
|
||
- `main`:主分支,稳定版本
|
||
- `develop`:开发分支,整合各模块开发
|
||
- `feature/*`:功能分支,单个模块开发
|
||
- `bugfix/*`:修复分支,bug 修复
|
||
|
||
## 许可证
|
||
|
||
MIT License
|