<script type = "text/template">... & lt; / script>

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

有人能给我解释一下吗?这是合法的吗?

231702 次浏览

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

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

Backbone并不强迫你使用任何特定的模板库——有相当多的模板库:胡子Haml生态谷歌闭包模板等等(你链接的例子中使用的是underscore.js)。它们将使用自己的语法让您在这些脚本标记中进行编写。

在盒子9的答案中加上:

Backbone.js依赖于underscore.js,它本身实现了John Resig的原始微模板。

如果你决定在Rails中使用Backbone.js,一定要检查Jammit gem。它提供了一种非常简洁的方式来管理模板的资产打包。 http://documentcloud.github.com/jammit/#jst < / p >

默认情况下,Jammit也使用JResig的微模板,但它也允许您替换模板引擎。

jQuery模板是一个例子,使用这种方法来存储HTML,将不会直接渲染(这是整个点)在其他HTML: http://api.jquery.com/jQuery.template/ < / p >

这是一种向HTML中添加文本而不进行渲染或规范化的方法。

这和添加它没有什么不同:

 <textarea style="display:none"><span>\{\{name}}</span></textarea>

这是合法的,非常方便!

试试这个:

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

有几个Javascript模板库使用了这种技术。Handlebars.js就是一个很好的例子。

通过设置脚本标记type而不是text/javascript,浏览器将不会执行脚本标记的内部代码。这叫做微模板。这个概念在单页应用程序(又名SPA)中广泛使用。

<script type="text/template">I am a Micro template.
I am going to make your web page faster.</script>

对于微模板,script标签的类型是text/template。Jquery创建者John Resig http://ejohn.org/blog/javascript-micro-templating/很好地解释了这一点

<script type = “text/template”> … </script>已经过时。应该使用<template>标记。