Files
miaoDirectory/README.md
T

146 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## TODO list:
| 计划 | 状态 |
|---|---|
| 拆分miaoDirectory | ✅ |
| 完善视频插件 | ✅ |
| 完善PDF插件 | ✅ |
| 完善Code插件 | ✅ |
| 实现miaoDirectory的搜索功能 | ✅ |
| 创建音乐播放器组件(仿QQ音乐移动端吧) | ✅ |
| plugin增加些属性,icon, disable, group之类的 | ✅ |
| 实现miaoDirectory的排序功能 | ✅ |
| 重构miaoFetchApi.getFile, 增加进度 | ❌ |
| 完善miaoDirectory的搜索功能 | ❌ |
| 完善图片浏览插件 | ❌ |
| VirtualDirectory更新时更新文件信息 | ❌ |
| miaoDirectory的复制文件/文件夹功能 | ❌ |
| 重构miaoDropHandler的实现 | ❌ |
| 重构主界面,拆分主界面组件的实现 | ❌ |
| 长期计划 |
|---|
| 无 |
## 碎碎念:
写的真潦草
## 让cursor生成了个架构图,可能不是很专业,不过我看了感觉没啥问题:
```
┌────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ miaoDirectory前端架构 │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
▲
│
│ HTTP API通信
│
┌────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 后端服务 │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 应用入口 (App.vue) │
│ ┌──────────────────────────┐ ┌────────────────────────────┐ ┌────────────────────────────────┐ │
│ │ 全局状态初始化 │ │ 全局消息提供器 │ │ 全局导航菜单 │ │
│ │ (初始化各个系统核心实例) │ │ (miaoAlertTipProvider) │ │ │ │
│ └──────────────┬───────────┘ └─────────────┬──────────────┘ └────────────────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────────────┐ ┌────────────────────────────┐ │
│ │ 视图控制器渲染 │ │ 视图容器渲染 │ │
│ │ (ViewController) │ │ (ViewContainer) │ │
│ └──────────────────────────┘ └────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
│ │
│ │
▼ ▼
┌────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 多页面系统 │
│ │
│ ┌──────────────────────────────────────────┐ ┌───────────────────────────────────────────────┐ │
│ │ VirtualPages类 │ │ VirtualPage类 │ │
│ │ ┌────────────────────────────────────┐ │ │ ┌─────────────────────────────────────────┐ │ │
│ │ │ _views │ │ │ │ component: 页面使用的组件 │ │ │
│ │ │ (存储所有虚拟页面的响应式数组) │ │ │ │ name: 页面名 │ │ │
│ │ └────────────────────────────────────┘ │ │ │ visible: 是否可见 │ │ │
│ │ │ │ │ currentDirectories: 当前使用的目录 │ │ │
│ │ ┌────────────────────────────────────┐ │ │ │ currentFiles: 当前使用的文件 │ │ │
│ │ │ getIndex(): 获取页面索引 │ │ │ │ id: 唯一标识符 │ │ │
│ │ │ getView(): 根据ID获取页面 │ │ │ │ color: 页面颜色 │ │ │
│ │ │ push(): 添加新页面 │◄──┼────┼─┤ title: 页面标题 │ │ │
│ │ │ deleteView(): 删除页面 │ │ │ │ exitConfirm: 关闭时是否需要确认 │ │ │
│ │ │ find(): 查找页面 │ │ │ │ allowCopy: 是否允许复制页面 │ │ │
│ │ └────────────────────────────────────┘ │ │ └─────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────┘ │ │ │
│ ▲ │ ┌─────────────────────────────────────────┐ │ │
│ │ │ │ setTitle(): 设置标题 │ │ │
│ │ │ │ switchShow(): 切换显示状态 │ │ │
│ │ │ │ refresh(): 刷新页面 │ │ │
│ │ │ └─────────────────────────────────────────┘ │ │
│ │ └───────────────────────────────────────────────┘ │
│ │ ▲ │
│ │ │ │
│ useVirtualPages() │ │
│ (全局单例访问钩子) │ │
│ │ │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
│ │
│ │
▼ │
┌────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 插件系统 │
│ │
│ ┌──────────────────────────────────────────┐ ┌───────────────────────────────────────────────┐ │
│ │ PluginCenter类 │ │ 插件接口定义 │ │
│ │ ┌────────────────────────────────────┐ │ │ ┌─────────────────────────────────────────┐ │ │
│ │ │ pluginsMap │ │ │ │ name: 插件名称 │ │ │
│ │ │ (存储已注册插件的映射表) │ │ │ │ icon: 插件图标 │ │ │
│ │ └────────────────────────────────────┘ │ │ │ disable: 是否禁用 │ │ │
│ │ │ │ │ group: 所属插件组 │ │ │
│ │ ┌────────────────────────────────────┐ │ │ │ priority: 优先级 │ │ │
│ │ │ register(): 注册插件 │ │ │ │ filter(): 适用性过滤函数 │ │ │
│ │ │ deregister(): 注销插件 │ │ │ │ func(): 插件主函数 │ │ │
│ │ │ registerComponent(): 注册组件插件 │ │ │ └─────────────────────────────────────────┘ │ │
│ │ │ getUsablePlugin(): 获取可用插件 │───┼────┼─► 创建虚拟页面 │ │
│ │ │ usePlugin(): 使用插件 │ │ │ │ │
│ │ └────────────────────────────────────┘ │ │ ┌─────────────────────────────────────────┐ │ │
│ └──────────────────────────────────────────┘ │ │ 插件分组(PluginGroup) │ │ │
│ ▲ │ │ │ │ │
│ │ │ │ default: 默认组 │ │ │
│ │ │ │ mainMenu: 主菜单组 │ │ │
│ │ │ │ immediately: 立即执行组 │ │ │
│ │ │ └─────────────────────────────────────────┘ │ │
│ │ └───────────────────────────────────────────────┘ │
│ │ │
│ usePluginCenter() │
│ (全局单例访问钩子) │
│ │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
│
│
▼
┌────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 虚拟文件系统 │
│ │
│ ┌──────────────────────────────────────────┐ ┌───────────────────────────────────────────────┐ │
│ │ VirtualDirectory类 │ │ VirtualFile类 │ │
│ │ ┌────────────────────────────────────┐ │ │ ┌─────────────────────────────────────────┐ │ │
│ │ │ name: 目录名 │ │ │ │ name: 文件名 │ │ │
│ │ │ path: 完整路径 │ │ │ │ size: 文件大小 │ │ │
│ │ │ stats: 文件状态信息 │ │ │ │ stats: 文件状态信息 │ │ │
│ │ │ files: 文件列表 │◄──┼────┼─► parent: 父目录 │ │ │
│ │ │ directories: 子目录列表 │ │ │ │ id: 唯一标识符 │ │ │
│ │ │ parent?: 父目录 │ │ │ │ path: 完整路径(计算属性) │ │ │
│ │ └────────────────────────────────────┘ │ │ └─────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────┘ └───────────────────────────────────────────────┘ │
│ ▲ │
│ │ │
│ │ │
│ useRootVDirectory() │
│ (获取根目录实例钩子) │
│ │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
```