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

能做什么

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

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

做好功课

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

语言选择

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

数据存储

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

例子

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

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

API

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

安全意识

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

  • 了解浏览器安全原理。
  • 消除XSS隐患(所有的input都要validate,所有的output都要escape)。
  • 不得窃取、存储用户隐私。
  • 不使用别处粘贴来的陌生代码。
  • 经常维护更新,消灭漏洞。
  • 珍惜用户访问体验。
  • 尊重API礼仪。
  • 保护好自己的账号,增加密码强度,毕竟被盗号了上边都没有意义。
  • ……

向优秀开发者取经

您可以在他们的个人页面留言求助(请注意礼仪😀)

开发者 擅长领域 活跃站点
avatar Summerset CSS,JS,Mustache 魔兽世界\太空工程师
avatar Yuee JS,CSS,Lua,Mustache FF14
avatar Honestleaf JS,Lua Warframe
avatar 东风有意 JS,Lua 太吾绘卷
avatar 林地树喵 JS,Lua 风暴英雄
avatar MycroftQin JS,CSS, 主页设计,Mustache 驯龙高手
avatar SerGawen CSS, Lua
avatar