【发布时间】:2010-09-12 20:07:28
【问题描述】:
在成熟的编程语言中,模板是一项相当健康的业务,但有没有可以用 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 得到了数十种语言的广泛支持。现在是当前答案,以防有人仍在阅读此内容。
【问题讨论】:
-
请记住,内联 javascript 与 Actionscript 兼容,这使得 Flex 可用。
标签: javascript templates