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]));
});