js模板

时间:2023-03-08 20:39:43

作用

适合用于定义模板(模板容器),不解析(渲染/执行)。

为什么这样使用

在js里面,经常需要使用js往页面中插入html内容。比如这样:

var number = 123;
$('#d').append('<div class="t">'+number+'</div>')

如果html很短还好说,但是遇到描述里面的这么大段,直接用字符串存储会很困难,因为不光要处理单引号,还需要很多「+」号把字符串一个个连接起来,十分的不方便。

给设置type="text/template",标签里面的内容不会被执行,也不会显示在页面上,但是可以在另一个script里面通过获取,然后再通过相关的模板工具进行处理,插入到页面中。这样就把大段的HTML操作从js里面分离开了。

例子

http://www.cnblogs.com/zhuzhiyuan/p/3510175.html

可以在.html文件中定义:

<script type="text/x-jquery-tmpl" id="tmpl">
</script>

这样,在.js文件中就可以使用该模板:

var tmpl= $('#tmpl').tmpl({name:'tp'});
$('body').append(tmpl);

完整例子如下:

<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title></title>
</head>
<body>
<div id='container'>
</div>
</body>
<script src="jquery.js"></script>
<script src="jquery.tmpl.js"></script>
<script type="text/x-jquery-tmpl" id="tmpl">
<div>1、普通变量两种写法,第二种=后面必须有空格:<br>${param1} {{= param1}}</div>
<div>2、html编码:<br>{{html param2}}</div>
<div>3、if else语句:<br>{{if param3>5}}周末{{else}}工作日{{/if}}</div>
<div>4、each语句操作数组:<br>{{each(i,o) param4}}第${i}个元素:${o.value}; {{/each}} </div>
</script>
<script type="text/javascript">
var params = {
param1:'普通变量',
param2:'<em>html</em>',
param3:7,
param4:[{value:100},{value:200},{value:300}]
};
var tmpl = $('#tmpl').tmpl(params);
$('#container').append(tmpl);
</script>
</html>

结果:

js模板