抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

搭建一个个人维基用来整理知识的想法早已有之,但具体该使用什么方案却迟迟没能定下来。在最初的想法里,我希望满足下面的几项需求:

  • 内容与表现分离
  • 自动化构建
  • 可以使用自己定制的模板
  • 词条的分类灵活,以适应知识体系的逐渐完善
  • 方便建立知识点(词条)间的联系
  • 需要用笔记时能快速提取
  • LaTeX\LaTeX 公式输入
  • 代码块语法高亮

作为参考,见过别人用 Dokuwiki 的,也有直接拿 Hexo 的 Wikitte 主题搭建的,等等。当然,我自己也做过一些尝试,比如 Zim Wiki ,不过这个太简陋了,完全无法满足我的需求;甚至受 小时物理百科 的影响,尝试过用 LaTeX\LaTeX 构建维基,但 LaTeX\LaTeX 对于我的需求而言又稍显复杂了,而且大量交叉引用在PDF中也并不方便阅读。最后在一番比较和取舍之下选择了TiddlyWiki[1]

TiddlyWiki,按官方说法是「一款非线性个人 Web 笔记本」。相比其他笔记和 Wiki 系统,其最大的特点之一是程序本体和数据全部都在一个 html 文件内,这意味着组织和阅读多个词条可以在同一个页面内直接完成,内容的关联更加直接,方便互相比照。同时,还有着非常强大的条目管理功能和插件系统,可扩展性和可定制性都很强。

TiddlyWiki 的优点还有很多[2],这里就不多赘述了。就我而言,更想简单说一下 TiddlyWiki 是如何满足前面提到的几项需求的:

  • 内容与表现分离:
    • 这一项近乎是一种哲学理念,实践起来是否须要完全符合还是看具体情况。
    • 典型地,WikiText 就提供了很多特定语义的语法元素,还有宏、模板嵌入等各种自定义工具。
    • 当然,经典地 HTML-CSS-JS 结构也是可以使用的。
  • 自动化构建:
    • 通过使用 Node.js 上的 TiddlyWiki 服务可以在本地同步保存修改;
    • 用 Git 和 Travis CI 实现向 Github Pages 自动部署。
  • 可以使用自己定制的模板:
    • 这一项其实是“内容与表现分离”的具体实践方法之一。
    • WikiText 支持模板条目和宏。
  • 词条的分类灵活,以适应知识体系的逐渐完善:
    • TiddlyWiki 是基于标签分类的,一个词条可以分到多个标签下,这一点比许多按树状层级分类的方案要灵活得多。
  • 方便建立知识点(词条)间的联系:
    • 词条链接和词条嵌入。
  • 需要用笔记时能快速提取:
    • 能自动部署到网页上,有网就能看;
    • 还有灵活的搜索语法。
  • LaTeX公式输入:
    • KaTeX插件:支持的命令较少,不过是官方提供的,安装很容易。
    • MathJax插件:第三方提供的,比较老了,好像和新版不太兼容,需要折腾(反正我没能折腾成功)。
  • 代码块语法高亮
    • Highlight.js插件:这也是官方提供的。

除此之外,TiddlyWiki 还有一大优点是简单,几乎所有操作都可以在网页上完成,基本不用到处配置。这对于我这种对web技术基本一无所知的人来说是一个极大的优势。

不过也因为我对web技术的不了解,导致很大的功夫都花在自动部署的配置上了,最终也只是是照猫画虎。其间主要参考了 alexashley 的个人Wiki源码[3]、JavaScript 标准参考教程(alpha)[4]、《Blog自动部署实践: Hugo + Travis CI -> GitHub Pages》[5]等资料。

最终弄出来的成品在:https://miroox.github.io/wiki/


参考资料:


  1. TiddlyWiki中文网站 ↩︎

  2. 使用 TiddlyWiki 打造轻便个人 Wiki 知识库 ↩︎

  3. alexashley 的个人Wiki源码 ↩︎

  4. package.json文件 - JavaScript 标准参考教程(alpha) ↩︎

  5. Blog自动部署实践: Hugo + Travis CI -> GitHub Pages ↩︎

评论