FANDOM


通過昨天的測試,我們基本可以發現Mediawiki提供的Lua是一個閹割版的Lua,只保留了數據呈現上的能力,但是在發送網絡請求等OS操作上則力不從心,以致無法利用Mediawiki的原生API。而我們利用Node JS在Heroku上已經部署成功的zh.asoiaf.Dict則完美實現了對Mediawiki API的請求(感謝萌萌)。在zh.asoiaf.Dict上我們對數據的利用只能基於Javascript,而javascript添加個按鈕改個樣式還行,做模板化的數據呈現無論效率還是效果肯定不如Lua。

如果將其中的方法抽象出來,就可以實現在雲端獲取數據,在Wikia服務器上呈現數據的能力。Node JS和Lua之間的通訊,可以使用JSON的形式,流程如下:

Node利用Mediawiki API抓取數據

Node生成JSON

Node將JSON post到Mediawiki:命名空間下某頁面

本地Lua使用wm.title.getContent()獲取JSON

用Module:JSON解碼

Lua實現數據呈現

理想案例

通過這種數據交互方式,我們可以實現很多以前處理不了的事情,比如:

  • Node雲端獲取全部人物事件的生卒年月。序列化後傳遞給Lua,生成即時更新的時間軸。
除了特别提示,社区内容遵循CC-BY-SA 授权许可。