模板在已建立的编程语言中是一项相当健康的业务,但是有没有可以用 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 引擎之外使用。
Microsoft 的例外——您可以在浏览器或任何其他 ASP 引擎中处理相同的 ASP。这有其自身的一系列可移植性问题,因为您必须使用 Microsoft 系统。我将其标记为答案,但仍然对更便携的解决方案感兴趣。
附录 2 (2020)
抛开这个老问题,十年过去了,Mustache 得到了数十种语言的广泛支持。现在是当前答案,以防有人仍在阅读此内容。