Files
miaoDirectory/README.md
T

19 KiB
Raw Blame History

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()                                                                   │
│            (获取根目录实例钩子)                                                                      │
│                                                                                                    │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘