<脚本类型=“文本/模板”>...</脚本>

我只是偶然发现了一些我以前从未见过的东西。在Backbone源代码中.js的示例TODO应用程序(Backbone TODO示例),他们将模板放在一个中,其中包含看起来像PHP的代码,但带有JavaScript标签。<script type = "text/template"></script>

有人可以向我解释一下吗?这是合法的吗?


答案 1

这些脚本标记是实现模板化功能(如PHP)的常用方法,但在客户端。

通过将类型设置为“文本/模板”,它不是浏览器可以理解的脚本,因此浏览器将简单地忽略它。这允许您将任何内容放入其中,然后可以稍后提取这些内容,并由模板库使用该库来生成HTML代码段。

Backbone不会强迫你使用任何特定的模板库 - 那里有相当多的:MustacheHamlEcoGoogle Closure模板等(你链接到的示例中使用的模板是下划线.js)。这些将使用自己的语法供您在这些脚本标记中编写。


答案 2

这是合法的,非常方便!

试试这个:

<script id="hello" type="text/template">
  Hello world
</script>
<script>
  alert($('#hello').html());
</script>

一些 Javascript 模板库使用这种技术。车把.js就是一个很好的例子。