项目9 · Vue 任务看板
用 Vue 3 + Vue Router + Pinia 完成一个可持久化的三列任务看板
约 10 小时
学习重点
- 掌握 Vue 3 组合式 API 在真实项目里的组织方式
- 用 Pinia 管理跨页面状态并安全持久化
- 用 Vue Router 组织页面与深链接
- 用 Vitest 为 store 与组件写行为测试
页面 / 接口清单
- 01看板页:待办 / 进行中 / 已完成三列,新建、编辑、移列、删除任务
- 02关于页:验证路由切换不丢 store 状态
- 03持久化:localStorage 保存任务,刷新/重启浏览器后恢复
- 04测试:store CRUD 行为测试 + TaskCard 事件契约测试
验收清单
0 / 4(0%)
Vite + Vue 3 + Router + Pinia 建项目,渲染三个空列,窄屏单列堆叠
新建、编辑标题、移列、删除全部可用,卡片保持纯展示、事件上抛
关于页可切换、状态不丢;刷新后任务保留;脏数据不导致白屏
store 四个 action 与 TaskCard 事件契约有测试;npm run build 通过
README(项目目录)
# p9-vue-taskboard:Vue 任务看板 用 Vue 3 + Vue Router + Pinia + localStorage 完成一个三列任务看板。这是 Vue 3 track 的收口项目,对应课程 V18。 ## 学习目标 - 用组合式 API 组织组件与逻辑 - 用 Pinia 管理跨页面状态并安全持久化 - 用 Vue Router 组织页面与深链接 - 用 Vitest 为 store 与组件写行为测试 ## 启动步骤 ```bash # 1) 跑起始版本 cd starter npm install npm run dev # http://localhost:5173 # 2) 对照参考实现 cd ../solution npm install npm run dev # 3) 跑测试(在项目根目录) cd .. npm install npx vitest run ``` ## 目录结构 ``` p9-vue-taskboard/ ├── README.md ├── starter/ # 可运行的起点:三列骨架 + 新建任务 ├── solution/ # 完整实现:CRUD、移列、持久化、筛选 ├── tests/ # 行为测试(store + 组件契约) ├── docs/ # 数据模型与架构说明 └── fixtures/ # 样例任务数据 ``` ## 验收标准 - [ ] 新建 / 编辑 / 移列 / 删除 / 排序全部可用 - [ ] 刷新后任务保留;localStorage 脏数据不导致白屏 - [ ] 关于页切换后看板状态不丢 - [ ] `npx vitest run` 全绿 - [ ] `npm run build`(solution 目录)通过
相关课程
数据模型
Task { id: string (uuid), title: string, status: 'todo' | 'doing' | 'done', priority: 'low' | 'mid' | 'high', createdAt: string (ISO) };store 以 tasks 数组为唯一状态源,byStatus 为派生分组。