诸位天命人,WIKI首个在线互动地图黄风岭已正式上线,欢迎使用
我们无法提前拿到游戏,编辑部全员正在努力探索,争取收录更多内容
如果你有什么好的建议或者BUG反馈可以B站私信联系站长残天
全站通知:

开发者文档

来自黑神话:悟空WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

本页用于描述本Wiki已有设计、代码的思路和实现,并简述了我们的开发原则。

关于MediaWiki(简称MW)和Web开发,请参阅相关文档。

版本

最新信息请参阅 特殊:版本。 本节更新于截至2024年5月。

Bwiki会定期升级Wiki版本,请注意相关通知。在版本变更后,需要测试所有的模板、模块,以防某些特性变化导致bug。

Wiki:

  • MediaWiki: 1.37.0
  • Semantic MediaWiki: 4.0.0

前端


原则

优先级: 可用性 >> 可维护性 >> 美观 >> 新特性新技术

Wiki需要考虑未来数年的稳定维护。因此,相比于酷炫的效果和复杂的实现,简单可用更重要。


模板

允许我们重用结构和内容。

关于模板的整体思路,请参阅:帮助:模板

我们使用独立模板页模式在单独页面维护帮助文档。这些文档位于帮助命名空间,模板位于模板命名空间。

所有的模板都需要详细的说明文档,供使用者、维护者参阅。

模板基本设计原则如下:

单一职责

即“高内聚低耦合”。

如果一个模板提供多个功能,或者做多个事情,有以下缺点:

  • 增加理解困难:看一个模板=看十个
  • 增加维护困难:难以确定修改的影响。一个地方出错,其他功能也会受影响。
  • 增加测试困难:测试一个功能很简单,测试一堆可能相互影响的功能很困难。

典型的负面例子是BWiki的模板:板块。 它提供了13个模板的功能。

如果修改其中一个子功能时出现了语法错误,导致分配功能的Switch提前结束,可能的异常表现是位于子功能代码后边的所有功能失效。 这会对分析、定位问题带来很大困难。

KISS原则(Keep It Simple Stupid)

设计应当保持简洁、单纯,不加入非必要的复杂性[1]

  • 不复杂化代码
  • 不过度设计
  • 不过早优化
  • 不断重构

KISS原则最后的S并没有隐涵愚蠢的含义,而是恰好要求模板的设计是易使人理解的。

再复杂的模板,其使用者和未来的维护者也是广泛的BWiki用户。我们不能假设所有用户都是MediaWiki的使用专家。

设计和开发模板时,每多使用一个特性,就引入了一个新知识。这会增加对维护者的要求,使用者也更难理解模板的行为和工作原理。 缺少使用和维护的模板会逐渐被抛弃、替换。

合理使用模块

对于复杂的需求,可能要密集的嵌套使用解析函数。这常常导致「解析函数地狱」——阅读、维护困难。典型的是#arraymap函数。

此外,游戏通常可以提取数据,比如通过解包和脚本将数据自动整理成json,使用模块查询数据可以大大降低工作量。

前端

多写注释

最新信息请参阅 特殊:版本 和浏览器 DevTools(按F12开启)。

主页

描述主页的结构和相关模板

CSS

核心文件:

BWiki的CSS有多重覆盖,包括mediawiki、vector皮肤、BWiki官方、本Wiki的DIY。

因此,修改CSS时需要谨慎和仔细的测试。

例如,可能由多个CSS对同一个位置设定颜色,新CSS需要注意优先级和影响。已有的CSS也可能超过其设计影响范围。

善用浏览器DevTools,能节省大量精力。

Javascript

核心文件:

BWiki已经引入了jQuery,但由于加载不稳定,请优先使用原生JS。

缓存

Bwiki的静态资源有缓存,约半小时。

请参见社区文档 缓存

机器人

API: wukong/api.php

请注意限制机器人的操作频率。

在执行批量操作时,请务必先在少量页面测试,再进行大规模修改。

虽然Wiki会保留操作记录,但是批量的错误操作仍需要时间恢复,因此务必要小心谨慎。

机器人需要的cookie(SESSDATA)通常是手填,但是也可以从浏览器存储中自动读取。

请参阅社区文档 基于Python的API示例