冰与火之歌中文维基
注册
Advertisement

通过昨天的测试,我们基本可以发现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,生成即时更新的时间轴。
Advertisement