dokuwiki
dokuwiki是一个相当老牌的基于PHP的专业wiki系统,我猜测他的名称来源于document+wiki,所以他的定位就是用来撰写文档的。他的优点是轻量且功能强大,甚至不需要数据库,dokuwiki默认的数据存储方式是用文件,他有自建的索引体系,据我测试全文搜索还是相当高效的。文件存储带来的好处是极其方便维护,你甚至可以不用部署在服务器,直接用共享文件夹或git,再配合mac自带的PHP环境就可以简单实现多人协作。
安全方面
dokuwiki官方声称非常重视安全,可以基于ACL控制访问权限,可以精细到具体的某个词条/页面。也可以根据namespace(可以理解为文件夹)来控制。dokuwiki有自己的账号体系,但是也可以接入LDAP,Oauth2等账号体系。这些都可以利用插件来满足。
写作方面
dokuwiki 默认使用markup写作语法,学习曲线不算太陡峭,自带一个协作工具条,可以降低一些门槛。也可以通过插件的方式支持markdown,非常方便。依靠强大的插件社区,甚至可以支持流程图。
内容组织
dokuwiki底层还是wiki的逻辑,用词条来组织内容,词条就是内容的ID无须其他的自增ID,好处是清晰明了,而且方便引用,在dokuwiki的语法里面,用[[word]]
这样的语法就可以生成一个word词条的引用链接,而且这个词条可以是不存在的。也就是说你在写作的时候认为这个概念需要单独一个文档来解释的话就可以先把他框起来,如果词条不存在就是一个红色的链接,你点击这个链接可以完善词条。相反的,如果词条存在就是一个绿色的链接打开这个词条。这点相信上过维基百科的朋友们并不陌生。
词条还可以有命名空间,比如我们想写一个功能模块的文档,我们就写一个词条叫“模块”,但是客户端和服务端可能都会有这个词条,他们是不同的概念。我们就可以用命名空间来区分,词条引用也很简单比如[[前端:模块]] [[服务端:模块]]
。
dokuwiki在数据组织上,一个词条就是一个文件,命名空间就是文件夹。命名空间不仅可以避免冲突,使得词条组织更有条理,还有利于ACL做访问控制。
为什么说dokuwiki是一个专业的wiki系统呢,就在于他不仅提供了文档的撰写,而且提供了管理,他可以记录一个词条所有的提交记录,你可以回查任何一个历史版本,还提供了反链查询,你在看一个词条的时候可以查看这个词条被哪些其他词条引用,当然这个引用必须是显式的链接引用。这是普通的一些wiki不具备的功能。特别是反链的查询,有利于形成体系化的东西。
样式
开头也说到dokuwiki是一个相当老牌的项目,你可以看到许多十年以前的代码,包括他的样式也很老牌,一看就是老一辈的设计风格。不过实际上他的开发还是活跃的,最近(2020年)又发布了一个主版本,而且有许多第三方提供的比较现代的样式。这些都可以在插件市场找到。
推荐模板 https://www.dokuwiki.org/template:bootstrap3
推荐插件
- ldaplocal auth plugin
- Markdown Page Plugin
- Move plugin
- edittable plugin
- Diagram plugin
- smtp plugin