N23第 1 / 1 课时未开始内容版本 1.0.0 · 核验于 2026-10-26

个人知识站完整实战

个人知识站完整实战 · 阅读后完成下方实验与检查题,再用「标记完成」记录进度。

学习目标

零件全部就位,本课做总装:把浏览、编辑、归档、导出四条用户旅程完整走通,并对本地数据库、缓存、元数据、移动端做一次系统性体检。这是个人知识站的出厂验收。

问题场景

每块功能单测都绿,拼在一起却总有缝:归档后的笔记还出现在搜索里、导出的备份缺了最新进度、手机上编辑按钮挤到屏幕外。综合验收的意义,就是让这些「缝」在你能控制的环境里暴露出来,而不是在日常使用的第三个月。

核心解释

四条旅程,每条都有明确的起点、动作和终点断言:

旅程 动作链 验收断言
浏览 首页 → 课程 → 课时 → 笔记 标题元数据正确,流式加载有骨架,无控制台报错
编辑 打开笔记 → 修改 → 保存 → 撤销 保存即时生效,刷新一致,冲突被检测
归档 归档笔记 → 检查各入口 列表、搜索、导出三处状态一致
导出 导出备份 → 重建 → 导入 记录数与字段完整,归档状态保留

归档是检验状态一致性的好样板——它同时牵动三处:

-- 归档动作只改一个字段
UPDATE note SET archived = 1 WHERE id = ?;

但归档之后:列表查询要过滤 archived = 0,搜索要排除归档项,导出要保留归档位。任何一处忘了改,「归档了还在」的 bug 就从缝里钻出来。写操作后 revalidate 覆盖所有展示该数据的路由,是最后一道保险。

体检清单四个维度:

  • 数据库:迁移台账完整;PRAGMA integrity_check 通过;备份文件可恢复。
  • 缓存:每条写操作都绑定了失效调用;build 输出里动态页没有被误标成静态。
  • 元数据:主要页面标题唯一、描述准确、无效路径 404。
  • 移动端:DevTools 切手机视口走一遍四条旅程,检查触控目标大小、表单可用性与布局溢出。

示例拆解

出厂验收脚本化(可重复执行):

# 1. 核心路由
for p in / /courses /notes "/search?q=缓存"; do
  echo "$p => $(curl -s -o /dev/null -w '%{http_code}' "localhost:3000$p")"
done

# 2. 导出并核对
curl -s localhost:3000/api/backup/export -o /tmp/b.json
node -e "const b=require('/tmp/b.json');console.log('version:',b.backupVersion,'notes:',b.notes.length)"

# 3. 无效路径必须 404
curl -s -o /dev/null -w '%{http_code}\n' localhost:3000/courses/not-exist

三条全过只是及格线——真正的验收是把每条旅程手动走一遍并记录发现。验收中发现的每个问题都按 N21 的标准留档:复现步骤、现象、修复验证。

动手任务

在本机工程里完成:

  1. 跑通「归档 → 列表消失 → 搜索不出现 → 导出保留归档位」全链路。
  2. 执行验收脚本,把输出存档;任何非预期状态码都追查到底。
  3. 手机视口走一遍编辑旅程,修掉至少一个布局或触控问题。

常见错误

  • 验收只测正常路径:归档、空态、冲突这些「不正常路径」才是缝的藏身处。
  • 搜索绕过归档过滤直接扫库:两套读取逻辑,一套忘了 WHERE 条件。
  • 导出测试只看文件生成:不恢复核对等于没测;roundtrip 才是导出的验收标准。
  • 移动端靠缩放模拟:DevTools 视口能抓布局问题,抓不到触控体验;至少真机开一次。

检查与复盘

自查清单:

  • 四条旅程各有一次完整走查记录
  • 归档状态在列表、搜索、导出三处一致
  • 验收脚本可重复执行,输出已存档

参考资料

检查题共 1 题,提交后立即显示解析
答案由服务端判定;答错的题会自动进入复习计划。
Q1多选中等(多选,全部选对才算正确)

回顾知识站的整体架构,下列决策合理的有?(多选)

读完这一课了?

标记完成后,工作台会安排接下来的学习。

Command Palette

Search for a command to run...