有时候需要使用ajax来异步生成html,最土的方法就是用js的‘+’连接html代码,生成繁琐。一旦需要修改,对于少量的html代码到没啥问题,要是比较复杂的样式时,就真坑爹了,眼花缭乱有木有?JinkoTemplate库可以直接通过JinkoTemplate语法快速生成所需要的html代码,修改的时候也相当轻松,就如同修改当前html文件里的代码一样,不需要去修改js的地方。
以下是使用Demo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript" src="jinko.template.js"></script> <script type="text/html" name="" id="aaa" cols="30" rows="10">
{@exp var x = 'end'}
{@loop data,row,key,seq}
{@seq}:{@key} = {@row} {@x}<br>
{@if row.a==1 && row.c==4}
yes
{@elseif row.c==3}
no
{@endif}
{@endloop}
<br><br>
{@loop ary,row,key,seq}
{@seq}:{@key} = {@row}<br>
{@endloop}
<br><br>
{@if booltrue}
true
{@endif}
{@if boolfalse}
false
{@endif}
<br><br>
{@if yi == 1}
一
{@elseif yi == 2}
二
{@else}
零
{@endif} </script>
<div id="bbb"></div>
<script type="text/javascript">
var tpl = document.getElementById('aaa').innerHTML;
var jinkoTpl = new JinkoTemplate();
jinkoTpl.assign('data', {a:1, asdb:'22110', c:3});
jinkoTpl.assign('ary', [1,2,3,4, '你好', 'nihao']);
jinkoTpl.assign('booltrue', true);
jinkoTpl.assign('boolfalse', false);
jinkoTpl.assign('yi', 2);
document.getElementById('bbb').innerHTML = jinkoTpl.parse(tpl);
</script>
</body>
</html>
demo运行结果:
1:a = 1 end
2:asdb = 22110 end
3:c = 3 end 1:0 = 1
2:1 = 2
3:2 = 3
4:3 = 4
5:4 = 你好
6:5 = nihao true 二
模板语法:
模板语句由‘{@’和‘}’组成,共有由下五个句子:
{@if} {@else} {@elseif} {@endif} if语句
if语句及分支,用法{@if 表达式}
{@endif}为结束标记
{@loop} {@endloop} 循环语句
{@loop}有四个参数{@loop data,row,key,seq},参数之间用英文逗号隔开。其中,data和row参数是必须的。data是数据源(如数组等),row是遍历中的data的子集。key和seq参数是可选的,key是数据源索引(数组下标),seq是当前第几个子集(序号)。
{@endloop}为循环结束标记
{@exp} js表达式
可以执行js语句
{@变量} 输出变量值
模板对象的assign方法:
assign用于给模板对象指定的内部变量赋值,内部变量则用于模板语法中可以直接使用的变量
模板对象的parse方法:
parse方法接收一个参数,该参数为模板字符串,对该字符串进行解析和生成最终的html语句并返回
示例:
var tpl = document.getElementById('aaa').innerHTML; //获取模板内容
var jinkoTpl = new JinkoTemplate(); //创建模板对象
jinkoTpl.assign('data', {a:1, asdb:'22110', c:3}); //赋值模板对象内部变量
jinkoTpl.assign('ary', [1,2,3,4, '你好', 'nihao']);//赋值模板对象内部变量
jinkoTpl.assign('booltrue', true); //赋值模板对象内部变量
jinkoTpl.assign('boolfalse', false); //赋值模板对象内部变量
jinkoTpl.assign('yi', 2); //赋值模板对象内部变量
document.getElementById('bbb').innerHTML = jinkoTpl.parse(tpl); //解析模板并添加到DOM元素中
库下载地址(未压缩): http://files.cnblogs.com/files/JinkoWu/jinko.template.js
库下载地址(压缩): http://files.cnblogs.com/files/JinkoWu/jinko.template.min.js