通過昨天的測試,我們基本可以發現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,生成即時更新的時間軸。