Wiki的魅力之一就是允许用户依照需求扩展功能。本文将简述作为一个开发者,如何扩展灰机wiki。您可以在这里申请成为开发者。

能做什么

灰机的开发者可以通过灰机提供的API结合MediaWiki已有的API,进行大胆而具有创意的改造,包括但不限于:

基本上,你可以充分发挥你的创意,除非它有悖于灰机wiki:使用条款和内容声明

做好功课

  • 很多功能可能已经有人实现了。所以不妨依照相关协议直接使用或加以修改。
  • 很多库可能大大简便你的开发过程。其中有不少灰机已经打包。如有疑问,可在论坛咨询。
  • 观摩其他维基的代码是一个非常方便的学习模式。

语言选择

  • JavaScript 通常用于修改UI和呈现数据。可以利用API做很多事情,但由于异步加载的特性,不太适合做内容主干部分。
  • Lua 制作模板。优势是可以和维基标记语言(Wikitext)交换信息,并且Lua是在服务器端执行的,适合做内容。
  • CSS 修改样式。
  • Python、Node.js等 通常用于离线脚本。
  • PHP 编写MediaWiki扩展。
  • Wikitext 维基标记语言也能实现简易的逻辑运算,但是wikitext的解析效率较低,建议选择一门真正的编程语言。

数据存储

建议将数据存储于wiki页面中,可以解决版本控制等问题。并且,这种数据存储是免费/稳定的,不需要额外购买服务器。

例子

Bootstrap:自定义主题的设计初期,样式是保存在数据库中的。这样造成了几个问题:数据没有版本控制、数据修改没有日志、必须编写一套独立接口、不利于样式分享、不利于其他开发者再进行二次开发。再之后的调整中,所有样式以Json形式保存在MediaWiki:CommonStyle中,解决了以上几个问题。

查询页面内容的效率略低于数据库,但对于大多数二次开发来讲应该足够。

API

灰机Wiki支持全部MediaWiki API,并且在此基础上还增加了一些额外的接口:API

安全意识

可以明确的是,开发者的权限发放不是一场对编程水平和经验的考核。毕竟,每个人都曾是一个菜鸟。最重要的是安全意识和责任意识。不管你在各行各业,这都是亘古不变的准则。拥有开发者权限的用户,必须要:

  • 了解浏览器安全原理
  • 消除XSS隐患(所有的input都要validate,所有的output都要escape)
  • 不得窃取、存储用户隐私。
  • 不使用别处粘贴来的陌生代码。
  • 经常维护更新,消灭漏洞。
  • 珍惜用户访问体验。
  • 尊重API礼仪

……

  • 保护好自己的账号,增加密码强度,毕竟被盗号了上边都没有意义。
avatar