Kuma 简介:模板和脚本

正如我昨天宣布的那样,今天上午 10 点刚过,我们将 Mozilla 开发者网络 从基于 MindTouch 的维基切换到我们新构建的 Mozilla Kuma 维基平台。到目前为止,一切顺利!

在接下来的两周内,我将分享一些关于新平台的建议、技巧和建议。这是其中第一篇文章。今天,我将谈谈新的模板系统。

简短的历史

几年前,当我们切换到 MindTouch 时,其最主要的吸引力之一就是其强大的模板系统。该系统使得编写复杂的脚本以自动生成内容成为可能。它可以用于从简单的文本样式到查找信息和生成复杂的内容块的各种目的。多年来,我们一直依赖于 MindTouch。

我们从一开始就有一个关键要求,即 Kuma 支持类似的功能,因此,Les Orchard 和我们的开发团队的其他成员构建了 KumaScript,这是一个用于构建这种类型脚本的引擎。本质上,KumaScript 是使用 Node.js 实现的服务器端 JavaScript,并提供了额外的例程,使它能够访问维基数据并在加载时将内容注入页面内容。它拥有强大的缓存机制,使其运行速度极快,并且已被证明是我们非常有用的工具。

KumaScript 简介

如果您之前在 MDN 上进行过任何脚本编写,则需要进行一些调整。Les 写了一篇优秀的 介绍 KumaScript 的指南,我强烈推荐。如果您计划进行任何脚本编写,或者对该系统的功能感到好奇,请阅读该指南。

KumaScript 的真正妙处在于它速度快,并且全部使用 JavaScript 语法,因此非常容易上手。如果您进行过任何 Web 开发,就可以在 MDN 上编写脚本。唯一的“技巧”是,由于它非常强大,因此我们要求您获得特殊权限才能在 MDN 上编辑或创建模板。您可以 联系我 获取这些权限。

如果您想查看现有的模板以了解其工作原理,有一个页面 列出了每个模板。查看它们,感受一下!

关于未转换的模板

大多数最常用的模板已经从 MindTouch DekiScript 转换为 KumaScript 模板。有些没有转换。因此,您可能会偶尔遇到页面显示不正确,甚至在页面顶部显示一个包含错误消息的框。请随时在 #devmo 中向某人发出 ping,或者如果您有权限和时间,可以自己修复它。

如果您想查看已知未更新的模板列表,这里有一个!如果您更新了一个模板,请在页面底部的“模板审查”复选框中取消选中,并向其添加标签“ks-fixed”。

在过去几个月里,我们一直在努力转换模板,您应该不会经常遇到带有损坏模板的页面,但这种情况确实有可能发生。

您应该了解的关键区别

如果您使用或编写模板,除了由于使用 JavaScript 而不是基于 Lua 的语法而导致的明显语法差异之外,您应该了解一些差异。

  • 不再需要使用奇怪的语法来处理名称中包含破折号(“-”)的模板。您可以像使用其他任何模板一样使用它们:{{foo-bar(“some parameter”)}}.
  • 您不能像使用 DekiScript 一样在模板之外运行 KumaScript。所有 KumaScript 代码都必须位于模板中;MindTouch 允许您在任何页面上运行任意脚本。出于安全原因,我们不再允许这样做。这确实具有一个副作用,即不再可能嵌套模板调用;您不能像在 MindTouch 中那样执行 {{foo(bar())}}.
  • 您可以使用 JSON 作为模板的唯一参数。这为您提供了一种创建模板的方法,这些模板实质上接受命名参数。
  • 虽然我们已经实现了一些 MindTouch API 的克隆 作为短期解决方案,以便我们能够上线,但新模板通常不应使用它们。此外,只实现了我们实际需要的 API。从现在开始,我们将添加新的 Kuma 特定 API。
  • 模板被大量缓存。模板的输出会为它接收的每组输入保存。如果您更改模板,除非有人通过使用 shift-reload 加载使用这些输入的页面来强制它进行重新解释,否则对于给定的输入集,它不会被重新解释;但是,这样做会影响所有用户,而不仅仅是您。这极大地提高了性能,但也意味着模板更改有可能不会立即被所有人看到。
  • 一些语言环境的 标识符代码已更改.
  • URL 路径已更改:例如,不再是 /en/JavaScript,现在是“/en-US/docs/JavaScript”。服务器重写规则已到位,可以自动重定向现有链接,但新模板应该以新的方式进行操作。
  • 您不再可以将“nowiki”或“plain”类应用于文本以防止它被解释为模板。相反,在模板调用的第一个“{”之前添加一个反斜杠。例如,在编辑 关于模板的文档 时,这很有用。

试一试!

以上是对 KumaScript 是什么以及它有什么不同的简要概述。肯定还有很多东西要发现,所以请务必阅读 Introduction to KumaScript,如果您需要帮助,请随时在 IRC 上寻求帮助!


2 条评论

  1. Natalie Grossman

    如何返回到旧的维基?脚本错误不像文档那样有用。

    2012 年 8 月 4 日 下午 12:40

  2. Jonathan Kamens

    Microsoft 开发者新闻和 about:addons 发生了什么?我在新网站上找不到 https://mdn.org.cn/en-US/devnews/ 的等效项,我的 RSS 阅读器也无法再读取 https://mdn.org.cn/en-US/devnews/index.php/categories/about-addons/feed/。它们消失了?

    2012 年 8 月 6 日 下午 4:45

本文的评论已关闭。