行内评论一直是我很期盼的功能,对于一段笔记而言,借助评论可以不断的反刍或沉淀自己的想法,或者和其他的内容块进行关联。
去年基于块属性实现了类似 Notion 那样的评论功能,但这种方案有几个问题:
-
评论内容是存储在块属性上的,不便于编辑、维护。另外,从技术实现上来看,评论内容存储在 dom 属性上,对于较长文本的存储是否影响渲染效率这个有待研究(我是前端小白)。
-
更要命的是导出文档时评论内容无法同步导出。
最近发现思源笔记挂件 API开放了很多接口,尤其是对于内容块的相关操作。评论本质上也可以是一个内容块呀,那是不是可以把它当做 block 来存储,基于这个思路于是有了现在这个方案:
- 仍旧是通过
<strong>
标签来标识引文内容,因为其他标签不支持自定义属性 - 通过 strong 标签里的 style 属性来存储引文 id
- 新增的评论内容通过 appendBlock 等接口插入文章末尾,通过 custom-quote-id 属性与引文关联
这样评论内容实质上作为普通的内容块存在于文档中,在导出时也不会丢失信息。
将 theme.js
文件和 comment
文件夹复制到常用的主题文件夹目录,并将思源软件设置为该主题。
这样在选中文本时,浮出工具栏会多出一个评论按钮(最后一个),点击即可添加评论。
如果您觉得这项功能能带来实际帮助,订阅思源时欢迎使用我的邀请码 4EY48YJ
- 错误和异常的处理
- 段落内所有评论列表的查看