1.8 KiB
1.8 KiB
Changelog: 文件管理器 P1 — Composable 拆分 + 目录缓存
日期: 2026-06-02
类型: 重构 (Refactor)
影响范围: frontend/src/pages/FilesPage.vue、frontend/src/stores/files.ts、frontend/src/composables/files/*
变更摘要
按 docs/design/specs/2026-06-02-files-refactor-design.md 完成 P1:将 1500+ 行 FilesPage.vue 业务逻辑拆分为 Pinia store 与域 composable;页面 script 约 110 行,仅负责装配与模板绑定。
动机
- 单文件难以维护,三处
browse()入口难追踪 - 为 P2 组件拆分、P3 缓存、P4 REST API 打基础
主要改动
| 模块 | 说明 |
|---|---|
stores/files.ts |
服务器/路径/列表/权限状态;5s TTL 目录缓存(LRU 50 项) |
useFilesBrowse.ts |
浏览、路由同步、序号与 in-flight 去重 |
useFilesNavigation.ts |
面包屑、初始化、路由 watch、服务器切换 |
useFilesPermissions.ts |
capability、权限横幅、一键 sudo |
useFilesActions.ts |
上传/删除/重命名/压缩/剪贴板等 |
useFilesEditor.ts |
预览、Monaco 编辑 |
useFilesPage.ts |
页面级装配入口 |
FilesPage.vue |
模板不变,script 瘦身为 useFilesPage() |
行为变化
- 重复进入同一目录(5s 内):命中内存缓存,0 次
/sync/browse - 写操作后:
invalidateCache强制下次browse({ force: true }) - 其余 UX 与 P0 后一致
是否需迁移 / 重启
- 仅前端重新构建部署
- 后端无变更
验证方式
cd frontend && npx vite build- 部署后
prune_frontend_assets.py - 文件管理:切换服务器、进目录、上传/删除/编辑/粘贴/sudo 配置
- Network:同目录 5s 内二次进入无 browse 请求