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

19

在成熟的编程语言中,模板是一个相当健康的业务,但是否有任何好的模板可以在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 开发者感到困惑。


Trimpath:

<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 已经被广泛支持,有数十种不同语言的版本。如果还有人在阅读这篇文章,那么 Mustache 就是当前的答案。


请记住,内联JavaScript与ActionScript兼容,这使得Flex可用。 - dkretz
16个回答

14

当我看到你的帖子时,我正想要发一个链接到他的文章 :) - cllpse
2
我非常喜欢Resig的引擎。问题在于它永远无法在JavaScript之外得到支持,因为它依赖于内联JavaScript来控制所有流程。(就像JSP 1依赖于内联Java一样,产生了同样的效果,而JSP 2试图纠正这种情况。) - Travis Wilson
这是一个基于John Resig微型模板引擎构建的jQuery插件:http://www.eslinstructor.net/vktemplate/。它非常简单、小巧而强大。你知道吗?使用这个插件,你不需要任何模板语言,只需使用JavaScript :) - vadimk

10

你可能想要查看Mustache——它是一种非常便携和简单的模板语言,支持JavaScript以及其他语言。


给这个优雅、流行、广泛可用的模板语言命名加1分。除了它在许多编程语言中都有实现外,你的Mustache模板也会在任何地方看起来一样。(与Tenijn相比,后者看起来像是一个紧密的竞争者。) - Stéphan Kochen
+1 Mustache是一种非常优雅的模板语言,它展示了强大并不需要复杂性。 - Tomas

6

5

Closure模板是谷歌推出的一个相当稳健的模板系统,适用于Javascript和Java。我使用它们的经验非常好。


2

2

我不会说它很出色,模板非常难读! - Ruan Mendes

1

这里有一个使用jQuery实现的Smarty模板语言示例。http://www.balupton.com/sandbox/jquery-smarty/demo/

其中一个令人印象深刻的功能是支持动态更新。因此,如果您更新了模板变量,它将在模板中任何使用该变量的地方进行更新。非常巧妙。

您还可以使用onchange事件来钩取变量更改。因此,当变量“page”更改时,可以用于执行效果或AJAX等操作;-)


1

1

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接