我偶然发现了以前从未见过的东西。在Backbone.js的示例TODO应用程序(Backbone TODO Example)的源代码中,他们将模板<script type = "text/template"></script>
包含在中,其中包含的代码看起来像PHP之外的东西,但带有JavaScript标签。
谁可以给我解释一下这个?这是合法的吗?
type="text/tcl"
,我看到在W3C文档?如何使用它?(我应该问另一个问题吗?)
我偶然发现了以前从未见过的东西。在Backbone.js的示例TODO应用程序(Backbone TODO Example)的源代码中,他们将模板<script type = "text/template"></script>
包含在中,其中包含的代码看起来像PHP之外的东西,但带有JavaScript标签。
谁可以给我解释一下这个?这是合法的吗?
type="text/tcl"
,我看到在W3C文档?如何使用它?(我应该问另一个问题吗?)
Answers:
这些脚本标记是在客户端实现模板功能(如PHP)的常用方法。
通过将类型设置为“文本/模板”,它不是浏览器可以理解的脚本,因此浏览器将直接忽略它。这样,您就可以在其中放置任何内容,然后可以随后将其提取出来,并由模板库用于生成HTML代码段。
Backbone不会强迫您使用任何特定的模板库-那里有很多模板库:Mustache,Haml,Eco,Google Closure模板等等(您链接到的示例中使用的模板是underscore.js)。这些脚本将使用它们自己的语法在这些脚本标记中进行编写。
.innerHTML
,因此在模板引擎中现在已经很普遍了。
<template>
在此处,但网站仍在使用这种技术,例如reddit.com。:F
合法而且非常方便!
尝试这个:
<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>
对于微型模板,脚本标签的类型为text/template
。jQuery创建者John Resig对此进行了很好的解释,网址为http://ejohn.org/blog/javascript-micro-templating/
要添加到Box9的答案中:
Backbone.js依赖于underscore.js,后者本身实现了John Resig的原始微模板。
如果您决定将Backbone.js与Rails一起使用,请务必查看Jammit gem。它提供了一种非常干净的方法来管理模板的资产打包。 http://documentcloud.github.com/jammit/#jst
默认情况下,Jammit还使用JResig的微模板,但它也允许您替换模板引擎。
这是一种将文本添加到HTML而不进行渲染或标准化的方法。
就像添加它一样没有什么不同:
<textarea style="display:none"><span>{{name}}</span></textarea>
<img src="image.jpg">
在textarea内不会导致浏览器获取image.jpg
,浏览器知道textarea内的内容不是要呈现的。
</script>
,则不能在script标记内使用它,因此可以使用textarea,反之亦然。
<script type = “text/template”> … </script>
已过时。请改用<template>
标签。
<template>
标签还没有被Internet Explorer支持的IE 11
<template>
。大多数主流的桌面浏览器都支持此<template>
标记。我强烈建议从现在开始使用它。developer.mozilla.org/en/docs/Web/HTML/Element/...
jQuery模板是使用此方法存储不会在其他HTML内直接渲染(这就是重点)的HTML的示例:http : //api.jquery.com/jQuery.template/