模块是一个Mediawiki的官方插件功能。该插件允许编写者在Mediawiki中,使用Lua语言来编写模块,完成一些批量工作的处理。模块可以理解为是一个高级版模板

为什么要使用模块

在复杂的模板中,我们通常会使用各种解析器函数来实现类似程序语言的逻辑判断和循环(比如{{#if}})。

当一个模板比较简单,只会使用到少量解析器函数的时候,解析器函数是一个非常方便的功能。

但是,当一个模板需要做大量逻辑判断、循环之类功能的时候,就会导致模板的代码臃肿不堪,陷入由{{}}组成的花括号地狱当中,这样的模板难以阅读和维护外。

这种时候就更适合使用模块来进行编写。模块使用了真正的程序语言Lua,使其可以处理更复杂的逻辑判断,也使代码的可读性更高,所以可以更轻松的制作出功能更丰富、也更利于维护的模板。此外,Lua的运行效率也比解析器函数高一些,可以提升一些页面的生成速度。

基础教程

基础教程部分,是通过一系列例子,来讲解如何编写模块,让模块可以完成原本通过模板承担的工作。阅读这部分内容,需要对Mediawiki的模板有一定了解。

标题 说明
Hello world 编写我们的第一个Hello world模块
替换模板入门 使用模块来替换掉简单的模板
HTML编写入门 讲解在Lua中,如何来写HTML

进阶教程

进阶教程部分,是讲解Lua语言的基本知识,以及常用的Lua函数/库,以及Mediawiki额外提供的库。

标题 说明
数据类型 介绍Lua中的数据类型
字符串 介绍Lua中的数据类型string,以及Mediawiki中对UTF-8编码的string操作库Ustring
变量 介绍Lua中变量的声明、赋值等
运算符 介绍Lua中可以使用的运算符
分支结构 介绍Lua中的分支结构(if
循环结构 介绍Lua中的循环结构(forwhilerepeat...until
函数 介绍Lua中的函数(数据类型function
介绍Lua中的表(数据类型table),以及操作表的库table的使用方法
数组 介绍Lua中的数组(数据类型table的一种应用方式)
模块 介绍Mediawiki中,模块文件的存储和引用(数据类型table的一种应用方式)

相关文档

avatar
0

@SerGawen 请问SMW的Lua接口有没有文档?

4个月
0

看到了,有action

3个月
avatar
Reasno
0

这页就这样吧,代码这种东西,还是应该看英文文档 不懂得也很难教 强行翻译成中文的话可能还会丢失很多信息。

26个月
avatar
Reasno
0

@SerGawen 你看如何

26个月
avatar
SerGawen
0

回复@Reasno:我看行 挺好的~

26个月