上古卷轴5天际:开发者文档
本页用于向高权限维护者描述本Wiki已有设计、代码的思路和实现,并简述了我们的开发原则。
关于MediaWiki(简称MW)和Web开发,请参阅相关文档。
模板
允许我们重用结构和内容。
关于模板的整体思路,请参阅:帮助:模板。
我们使用{{模板帮助}}在模板页显示帮助文档。这些文档位于帮助命名空间,模板位于模板命名空间。
所有的模板都需要详细的说明文档,供使用者、维护者参阅。
模板的维护者请尽量多的查阅相关文档。
前端
请务必多写注释。
Bwiki使用:
- Bootstrap v3.3.7 文档:https://getbootstrap.com/docs/3.3/
- jQuery v3.6.0 文档:https://api.jquery.com/
最新信息请参阅 特殊:版本 和浏览器 DevTools。
主页
目前,主页为 4:8 双栏布局,基于已有的Bootstrap。
考虑到首页每个部分的不同的编辑限制和可维护性,首页使用多个子页面拼接而成。
左栏由关于WIKI、最近更改、声明组成。 中栏由轮播图和中栏组成。
因此,每个子页面可以单独设置保护级别,对每个子页面的更改也不会影响其他部分。 出现问题时,也更容易排查和测试。
CSS
核心文件:
- MediaWiki:Common.css MW自带,有缓存,但是载入快
- MediaWiki:Main.css 本Wiki在Common.js中引入。无缓存,但需要等待JS载入,有明显延迟。
BWiki的CSS有多重覆盖,包括mediawiki、vector皮肤、BWiki官方、本Wiki的DIY。
因此,修改CSS时需要谨慎和仔细的测试。
例如,可能由多个CSS对同一个位置设定颜色,新CSS需要注意优先级和影响。已有的CSS也可能超过其设计影响范围。
建议的CSS修改流程:
- 在浏览器F12打开DevTools,查询和确认需要调整的CSS,并进行修改测试
- 在 MediaWiki:Main.css 修改CSS,观察一定时间(如半个月),请务必编写注释。
- 确认稳定后,移入MediaWiki:Common.css。
Javascript
核心文件:
- MediaWiki:Common.js 有缓存,但是载入快
- MediaWiki:Main.js 本Wiki在Common.js中引入。无缓存,但需要等待JS载入,有明显延迟。
BWiki已经引入了jQuery,因此可以使用其特性。
建议的JS修改流程:
- 在浏览器F12打开DevTools,在控制台中观察测试。
- 在 MediaWiki:Main.js 修改CSS,观察一定时间(如半个月),请务必编写注释。
- 确认稳定后,移入MediaWiki:Common.js。
模块
模块用来重用逻辑。基于Lua的模块可以完成更多工作。
如果可以用JS实现,请尽量使用JS。因为JS更容易上手和维护。
目前,我们没有使用中的模块。
小组件
独立的小功能可以用小组件实现。
核心定义页面 MediaWiki:Gadgets-definition
如已有的BilibiliVideo、DIYBiliUser。
注意,小组件的一系列静态文件同样有缓存。因此请注意:
- 小组件的定义的修改立即生效,但加载的缓存需要等待半小时更新。
- 需要频繁修改的小组件可以在小组件JS中加载另一个JS文件,并为其URL添加随机数参数避免缓存。
- 虽然小组件允许额外的CSS文件,但是考虑到缓存问题,推荐在JS文件中添加CSS,请参阅已有小组件源码。
缓存
Bwiki的静态资源有缓存,约半小时。
因此,在修改Common.js/css后,不会立即生效。
在添加、修改小组件后,不会立即生效(甚至报错如“跳过未识别的小组件XXX”)。
机器人
API:
- API csl/api.php
- Rest API csl/rest.php
请注意限制机器人的操作频率。
在执行批量操作时,请务必先在少量页面测试,再进行大规模修改。
虽然Wiki会保留操作记录,但是批量的错误操作仍需要时间恢复,因此务必要小心谨慎。
机器人需要的cookie通常是手填,但是也可以从浏览器存储中自动读取。
版本
最新信息请参阅 特殊:版本。 本节更新于截至2022年7月。
Bwiki会定期升级Wiki版本,请注意相关通知。在版本变更后,需要测试所有的模板、模块,以防某些特性变化导致bug。
Wiki:
- MediaWiki: 1.37.0
- Semantic MediaWiki: 4.0.0
前端:
- Bootstrap v3.3.7 文档:https://getbootstrap.com/docs/3.3/
- jQuery v3.6.0 文档:https://api.jquery.com/
原则
优先级: 可用性 >> 可维护性 >> 美观 >> 新特性新技术
Wiki需要考虑未来数年的稳定维护。因此,相比于酷炫的效果和复杂的实现,简单可用更重要。
请参阅 帮助:模板 中的: 单一功能原则 和 KISS原则。
Wiki设置
请参阅mediawiki文档 部分常用的设置页面(已经添加到了导航栏“Wiki管理”一栏)
- 重要设置
- MediaWiki:Sidebar 导航设置
- Mediawiki:Sitenotice 整站通告
- MediaWiki:Gadgets-definition 组件定义
- 提示说明
- MediaWiki:Newarticletext 新建页面提示
- MediaWiki:Editnotice-0 修改页面提示
- MediaWiki:Deletereason-dropdown 删除页面原因
- MediaWiki:Copyrightwarning2 编辑版权警示
- MediaWiki:Summary 修改页面摘要
- MediaWiki:Uploadtext 上传文件提示
- MediaWiki:Licenses 上传文件协议
- MediaWiki:Filedelete-reason-dropdown 删除文件原因