Mat*_*att 446 javascript templates types backbone.js underscore.js
我偶然发现了一些我以前从未见过的东西.在Backbone.js的示例TODO应用程序(Backbone TODO示例)的源代码中,他们将模板放在a中<script type = "text/template"></script>,其中包含的代码看起来像是PHP之外但带有JavaScript标记的代码.
谁可以给我解释一下这个?这是合法的吗?
Dav*_*ang 406
这些脚本标记是实现模板功能的常用方法(如在PHP中),但在客户端.
通过将类型设置为"text/template",它不是浏览器可以理解的脚本,因此浏览器将忽略它.这允许您在其中放置任何内容,然后可以在以后提取并由模板库使用以生成HTML片段.
Backbone不会强迫您使用任何特定的模板库 - 那里有很多:Mustache,Haml,Eco,Google Closure模板等等(您链接到的示例中使用的是下划线.js).这些将使用自己的语法在这些脚本标记内编写.
Rim*_*ian 115
这是合法的,非常方便!
试试这个:
<script id="hello" type="text/template">
Hello world
</script>
<script>
alert($('#hello').html());
</script>
Run Code Online (Sandbox Code Playgroud)
一些Javascript模板库使用这种技术.Handlebars.js就是一个很好的例子.
Fiz*_*han 26
通过设置type其他脚本标记text/javascript,浏览器不会执行脚本标记的内部代码.这称为微模板.这个概念广泛用于单页面应用程序(又称SPA).
<script type="text/template">I am a Micro template.
I am going to make your web page faster.</script>
Run Code Online (Sandbox Code Playgroud)
对于微模板,脚本标签的类型是text/template.Jquery创建者John Resig对此进行了很好的解释http://ejohn.org/blog/javascript-micro-templating/
And*_*ade 13
要添加到Box9的答案:
Backbone.js依赖于underscore.js,它本身实现了John Resig的原始微模板.
如果您决定将Backbone.js与Rails一起使用,请务必查看Jammit gem.它提供了一种非常干净的方式来管理模板的资产包装. http://documentcloud.github.com/jammit/#jst
默认情况下,Jammit也使用JResig的微模板,但它也允许您替换模板引擎.
Ker*_*mes 12
这是一种向HTML添加文本而不进行渲染或规范化的方法.
这与添加它没有什么不同:
<textarea style="display:none"><span>{{name}}</span></textarea>
Run Code Online (Sandbox Code Playgroud)
小智 10
<script type = “text/template”> … </script>已经过时了.请改用<template>标签.