36 lines
1.5 KiB
Markdown
36 lines
1.5 KiB
Markdown
|
|
# 文件管理器重构 P1 — 拆分 Composable
|
|||
|
|
|
|||
|
|
**日期**: 2026-06-02
|
|||
|
|
**设计**: `docs/design/specs/2026-06-02-files-refactor-design.md` §3 P1
|
|||
|
|
**前置**: P0 JWT 主动续期(已完成)
|
|||
|
|
|
|||
|
|
## 目标
|
|||
|
|
|
|||
|
|
- 将 `FilesPage.vue` 业务逻辑迁入 `stores/files.ts` + `composables/files/*`
|
|||
|
|
- `FilesPage.vue` 仅保留模板、筛选 UI 状态、组合 composable(目标 script < 400 行,P2 再压至 ≤250)
|
|||
|
|
- 引入 Pinia 单一真相 + 5s 目录缓存(P3 子集)
|
|||
|
|
|
|||
|
|
## 文件清单
|
|||
|
|
|
|||
|
|
| 路径 | 职责 |
|
|||
|
|
|------|------|
|
|||
|
|
| `frontend/src/stores/files.ts` | 服务器/路径/列表/loading/权限/缓存 |
|
|||
|
|
| `frontend/src/composables/files/constants.ts` | sessionStorage 键 |
|
|||
|
|
| `frontend/src/composables/files/useFilesBrowse.ts` | browse、错误文案、emptyHint |
|
|||
|
|
| `frontend/src/composables/files/useFilesNavigation.ts` | 路由同步、面包屑、初始化、watch |
|
|||
|
|
| `frontend/src/composables/files/useFilesPermissions.ts` | capability、横幅、一键 sudo |
|
|||
|
|
| `frontend/src/composables/files/useFilesEditor.ts` | 预览/编辑/保存回调 |
|
|||
|
|
| `frontend/src/composables/files/useFilesActions.ts` | 上传/删除/重命名/压缩等 |
|
|||
|
|
| `frontend/src/composables/files/index.ts` | 桶导出 |
|
|||
|
|
| `frontend/src/pages/FilesPage.vue` | 瘦身后页面 |
|
|||
|
|
|
|||
|
|
## 测试要点
|
|||
|
|
|
|||
|
|
- `npx vite build` 通过
|
|||
|
|
- 进目录仍 ≤1 次 `/sync/browse`(缓存命中 0 次)
|
|||
|
|
- 切换服务器、面包屑、粘贴、编辑、sudo 一键配置行为不变
|
|||
|
|
|
|||
|
|
## 回滚
|
|||
|
|
|
|||
|
|
`git revert` P1 commit;`FilesPage.vue` 单文件可独立回退。
|