0. 请不要阅读 Api文档;JS编写者特别不要阅读 MediaWiki 前端 API文档;Lua编写者特别不要阅读 Lua 参考手册
1. 不建议使用 zh 来在 Special:ApiSandbox 进行测试,这样可以让你更容易WAF;
2. 不要使用 mw.config.get()
来获取一些基本信息;
3. 浏览器级别的脚本不要使用 mw.Api 和 mw.ForeignApi 进行请求,而是使用直接使用 XMLHttpRequest
、fetch
等进行请求;
4. 使用
{
"action": "parse",
"page": "H:沙盒",
"prop": "text"
}
代替
{
"action": "query",
"prop": "revisions",
"titles": "H:沙盒",
"rvprop": "content"
}
来减慢你代码的速度同时增加开销且有几率获得正版萌娘百科认证;
5. 请不要使用没啥用的 wiki-saikou;
6. 部分参数例如 redirects: 1
不要使用 redirects: true
进行代替;
7. 不要尝试使用 generator
来合并两个 query
。
8. 使用{{#ifexist:Media:Box-1.png|A|B}}
而不是{{#if:{{filepath:Box-1.png}}|A|B}}
来检查图片是否存在,以增加高开销解析器函数的使用。
9. 如果只有一段需要嵌入的内容,优先选用{{嵌入片段}}而非<onlyinclude></onlyinclude>
。
10. 使用H:魔术字而非U:鬼影233/魔术字以学习英语。
11. 使用 new mw.Api().get()
而非 new mw.Api().post()
以提升用户 WAF 几率并缩减请求的最大长度。
12. MW 的模板参数名中可以夹杂回车,请尽情使用。
13. 优先使用 Evil 的 {{#forargs:}}
而非 {{#fornumargs:}}
。
14. 搜索时碰到内部错误,不要尝试在搜索末尾增加 -insource:""
,不然你就只能搜到标题但不能搜到内容了。
15. 使用 CodeMirror 的保存配置到子页面 代替以下 Special:MyPage/common.js,虽然这样每次加载页面都能少个请求,而且换浏览器等操作也不会丢失配置,但你可以通过 GUI 配置了。
/** CM6 配置 **/
Object.entries({
addons: [
"allowMultipleSelections",
"autocompletion",
"bracketMatching",
"closeBrackets",
"codeFolding",
"colorPicker",
"escape",
"highlightActiveLine",
"highlightSelectionMatches",
"highlightSpecialChars",
"highlightTrailingWhitespace",
"highlightWhitespace",
"hover",
"inlayHints",
"lint",
"openLinks",
"refHover",
"scrollPastEnd",
"signatureHelp",
"tagMatching",
"wikiEditor"
],
ESLint: {
env: { browser: true, es2022: true, jquery: true },
globals: {
mw: "readonly",
mediaWiki: "readonly",
OO: "readonly",
moment: "readonly",
LocalObjectStorage: "readonly",
insertToBottomRightCorner: "readonly",
wgULS: "readonly",
wgUVS: "readonly",
oouiDialog: "readonly",
MoeSkin: "readonly",
MOE_SKIN_GLOBAL_DATA: "readonly",
libCachedCode: "readonly",
CodeMirror: "readonly",
},
rules: {
"no-unused-vars": ["error", { varsIgnorePattern: "_addText" }],
},
},
Stylelint: { rules: { "no-descending-specificity": null } },
}).forEach(function (c) {
localStorage.setItem("codemirror-mediawiki-" + c[0], JSON.stringify(c[1]));
});