Викия

ru-Викия

коммент.5

Lua - язык разметки для более быстрых и мощных шаблонов

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Большинство участников на Викия, вероятно, знакомы с шаблонами и регулярно их используют. Для создания шаблонов в MediaWiki существует специальный язык разметки - викитекст, особые элементы которого (например, функции парсера) позволяют использовать логические операции и другие методы для постройки шаблона. Функции парсера фактически превратили викитекст в логический язык программирования (хоть и значительно ограниченный в применении).

Wikitext.png

Фрагмент шаблона на викитексте с Elderscrolls Wiki. Выглядит просто? Нет? Тогда попробуйте Lua!

Функции парсера позволяют производить много операций внутри шаблона и создавать довольно сложные шаблонные конструкции, однако они обладают рядом значительных недостатков - обработка сложных шаблонов требует от сервера множество ресурсов и времени, что в итоге сказывается на времени загрузки страницы, кроме того, код сложных шаблонов жутко нечитаем.

Чтобы избавить участников от недостатков сложных и медленных шаблонов на викитексте, в MediaWiki была введена поддержка Lua - скриптового языка программирования для шаблонов. И теперь Lua станет доступен и на Викия.

Lua позволит участникам создавать более сложные и быстрые шаблонные конструкции, и совершать операции, которые слишком сложно описать викитекстом. Язык Lua несложный, его просто выучить и использовать, что было подтверждено на практике некоторыми из наших сообществ, например WoW Wiki, участники которого быстро освоили Lua и успешно использовали его для модификации старых шаблонов. Даже если вы не пишете шаблоны самостоятельно, и ничего не понимаете в программировании, вы сможете оценить пользу от Lua: переписанный с использованием Lua инфобокс персонажа на Marvel Database позволил страницам загружаться на 30-50% быстрее!

Как выглядит шаблон на Lua?

Шаблоны на Lua создаются в пространстве имён Module, и добавляются на страницу с помощью функции парсера {{#invoke:}}. В качестве примера - элементарный шаблон на Lua, который можно использовать для приветствия кого/чего-либо. Создадим шаблон под названием Module:Greeting

local greeting = {} -- Создаём объект для нашего шаблона
 
function greeting.hello( frame ) -- Переопределяем функцию greeting.hello  
    return 'Привет, ' .. frame.args[1] .. '!' -- возвращаем строку с приветствием
end
 
return greeting

Чтобы использовать такой шаблон на странице (или внутри другого шаблона), его нужно вызвать, вписав в текст страницы строчку: {{#invoke:Greeting|hello|Lua}}, что приведёт к следующему результату на странице:

Привет, Lua!

Пример более сложного шаблона.

Где найти документацию по Lua?

В настоящее время мы работаем над документацией по Scribunto, нашему расширению, подключающему Lua, вы можете найти её на Wikia Developers Wiki (пока только на английском языке). Документация будет пополняться, когда мы выпустим данное расширение. Также, о Lua можно почитать на официальном сайте или в Википедии.

Что дальше?

В ближайшее время мы планируем развернуть поддержку Lua на некоторых википроектах. Также, мы будем публиковать новые блоги о функциях и возможностях Lua (так что следите за новостями, если этот блог вас заинтересовал), и, так как мы планируем развернуть поддержку Lua на всех википроектах Викия, мы будем развивать документацию по этому языку, а также проводить уроки по изучению Lua, для тех, кто заинтересуется новым языком для шаблонов, на Wikia Developers Wiki.

Викия-сеть

Случайная вики