学习笔记 · 心得记录
随读随记:在正文任意位置用鼠标选中文字,就会出现"📝 记笔记"工具条;笔记锚定到选中文本,刷新页面后自动重新高亮。数据默认只存在你的浏览器 localStorage(不注册、无账号、无数据库、别人看不到);需要沉淀时一键导出为 GitHub Issue,或复制 Markdown 粘贴到 Discussions / 任意笔记软件。
这个工具能做什么
| 动作 | 说明 |
|---|---|
| 划词记笔记 | 选中正文文字 → 点工具条"记笔记"→ 写下心得保存;选中处立即高亮 |
| 查看 / 编辑 | 点高亮文字可编辑该条笔记;右下角 📝 面板可看"本页 / 全部" |
| 复制 Markdown | 一键复制带页面来源和划词引用的 Markdown,可粘贴到 GitHub Discussions |
| 导出 Issue | 预填 issues/new?title=…&body=…,登录 GitHub 后确认即发布,无需 token |
| 删除 | 单条删除(有确认),对应高亮一并移除;不提供"清空",防误删 |
高亮是怎么实现的
笔记保存时记录选中文字在正文 #content 里的字符起止偏移,刷新页面后按偏移重新包裹 <mark>。局限:
- 偏移基于当前页面文本;如果这本书的内容后来被修改(比如某章重写),旧笔记的偏移可能错位或不再高亮,但笔记内容和原文都还在面板里,复制/导出不受影响;
- 跨多个连续段落的选择会按文本节点分段高亮,显示为一段连续的黄色底纹。
数据存在哪
- localStorage:键为
cs-notes:v1:<页面路径>,只在你当前浏览器。换设备、清缓存、开无痕即不可见——它是"草稿区",不是存档。 - GitHub Issues:导出后存在仓库 Issues 里,可搜索、打标签、转 PR,随仓库一起版本化。
- GitHub Discussions:GitHub 没有"预填新建讨论"的链接,所以这里用"复制 Markdown"代替——粘贴发布即可;若想"一键发 Discussion",后续可以注册免费 OAuth App 走 GraphQL API(本工具暂不内置)。
把笔记变成正式章节
笔记面板里的内容只是草稿。想让它成为这本书的一部分(被搜索、随 GitHub Actions 部署、保留版本历史):
- 把内容整理成 Markdown,追加到对应部分的章节文件,或新建文件;
- 挂进 SUMMARY.md;
commit + push,Actions 自动构建部署到 GitHub Pages。
实现与配置
- 组件:notes.js(无依赖原生 JS,样式内联)。
- 挂载:
book.toml→[output.html]→additional-js = ["notes.js"]。 - 目标仓库:
notes.js顶部的GITHUB_REPO常量,导出 Issue 时指向该仓库。