JavaScript 支持哪些好的模板语言?

IT技术 javascript templates
2021-03-01 00:18:45

模板在成熟的编程语言中是一项非常健康的业务,但是有没有可以用 JavaScript 处理的好的模板?

“模板”是指接受数据对象作为输入、将数据插入某种序列化标记语言并输出标记的文档。众所周知的例子是JSP、原始的 PHP 、XSLT

我所说的“好”是指 HTML 作者编写的声明性强且易于编写,它很健壮,并且其他语言也支持它。比我所知道的选项更好的东西。“不好”的一些例子:


字符串数学:

element.innerHTML = "<p>Name: " + data.name
    + "</p><p>Email: " + data.email + "</p>";

显然太笨重,HTML 结构不明显。


XSLT:

<p><xsl:text>Name: </xsl:text><xsl:value-of select="//data/name"></p>
<p><xsl:text>Email: </xsl:text><xsl:value-of select="//data/email"></p>

// 从结构上讲这很有效,但让我们面对现实吧,XSLT 使 HTML 开发人员感到困惑。


修剪路径:

<p>Name: ${data.name}</p><p>Email: ${data.email}</p>

// 这很好,但处理器仅在 JavaScript 中受支持,并且语言有点原始 ( http://code.google.com/p/trimpath/wiki/JavaScriptTemplateSyntax )。


我很想看到 JSP 或 ASP 或 PHP 的一个子集移植到浏览器,但我还没有找到。

现在人们在 JavaScript 中使用什么来制作模板?

附录 1 (2008)

几个月后,这里发布了大量可行的模板语言,但其中大多数在任何其他语言中都无法使用。大多数这些模板不能在 JavaScript 引擎之外使用。

微软的例外——您可以在浏览器或任何其他 ASP 引擎中处理相同的 ASP。这有其自身的一组可移植性问题,因为您必须使用 Microsoft 系统。我将其标记为答案,但我仍然对更便携的解决方案感兴趣。

附录 2 (2020)

抛开这个老问题,十年后,Mustache 得到了数十种语言的广泛支持。现在是当前的答案,以防有人仍在阅读本文。

6个回答

John Resighttp://ejohn.org/blog/javascript-micro-templating/ 上有一个迷你 javascript 模板引擎

我非常喜欢 Resig 的引擎。问题是它永远不能在 Javascript 之外得到支持,因为它依赖于所有控制流的内联 Javascript。(很像 JSP 1 依赖内联 Java 的方式,效果相同,JSP 2 试图纠正这种方式。)
2021-04-28 00:18:45
当我看到你的帖子时,我正要发布他文章的链接:)
2021-05-07 00:18:45
这是一个建立在 John Resig 微模板引擎上的 jQuery 插件:eslinstructor.net/vktemplate 这是一个非常简单、小巧且功能强大的插件 你知道吗?使用此插件,您不需要任何模板语言,只需使用 javascript :)
2021-05-18 00:18:45

您可能想查看Mustache - 它是真正可移植且简单的模板语言,在其他语言中支持 javascript。

+1 Mustache 是一种非常优雅的模板语言,它表明力量不需要复杂性。
2021-05-01 00:18:45
+1 用于命名这种优雅、流行、广泛使用的模板语言。除了它有多种语言的实现之外,你的 Mustache 模板在任何地方看起来也一样。(与 Tenijn 相比,Tenijn 看起来像是一个强有力的竞争者。)
2021-05-12 00:18:45

我今天遇到了这个,虽然我还没有尝试过......

http://beebole.com/pure/

闭包模板是来自 Google 的一个相当强大的模板系统,它们适用于 Javascript 和 Java。我有很好的使用它们的经验。

ExtJS有一个名为 Ext.XTemplate 的特殊模板类:http ://extjs.com/deploy/dev/docs/?class=Ext.XTemplate

我不会称之为例外,模板很难阅读!
2021-04-21 00:18:45