yaya template,支持完整javascirpt语法的前端模板 执行速度最快的前端模板
yaya template是一个轻量级前端模版,所用指令仅需{$...$}和{%...%},前者包含需要输出html语句,后者包含js变量。
支持javascript完整语法,你可以写for或者while或者其他任一javascript的语法。
同时,yaya template也是目前翻译与渲染数据执行速度最快的前端模板。
下载1.1.0版
yaya template的使用方法很简单
- 引用js文件
- 写模板
- 控制模板渲染
var template = YayaTemplate(document.getElementById("template").innerHTML); document.getElementById("resultshow").innerHTML = template.render({ a:0, b:1 }); - 得到结果
yaya template的{$...$}与{%...%}
- {$...$}即为输出语句,比如{$<div>abc</div>$}将输出<div>abc</div>。{$...$}里可以是html语句或者{%...%}变量。
- {%...%}即为变量语句,它将代表当前运行环境中的变量值。比如num==2;则$<li class="{%num%2==0?"a":"b"%}">$将输出<li class="a">。同时,{%...%}里可为任意的js代码,只要有运行返回值即可,当没有返回值时,将出现"undefined"的字样。
使用yaya template的一些说明
- YayaTemplate()方法将执行模板的翻译工作,参数为要解析的模板语言字符串,将返回一个包含render方法的对象。render方法的参数为json,表示对于的值。render方法返回的便是翻译并渲染数据后的html/xml结果。
- 如果频繁调用render方法,建议将YayaTemplate("template1")赋值给一个变量,如template1,每次渲染的时候采用template1.render()方法,这样可以避免每次都去翻译一次模板语言。
- yaya template是轻量级模板,{%...%}都是原文输出。如果为了防xss漏洞,可以调用encodeHTML函数如{%encodeHTML(data)%}。
例1 ajax获取数据并渲染
模板内容
ajax获取数据并通过render渲染,映射json数据
var template1 = YayaTemplate(document.getElementById("template1").innerHTML);
function page(url){
baidu.ajax.get(url,function(xhr,responseText){
document.getElementById("list").innerHTML = template1.render({
"json":baidu.json.parse(responseText)
});
});
}
例2 xapp数据渲染
模板内容
渲染
var xappList = YayaTemplate(document.getElementById("xappList").innerHTML);
baidu.ajax.get("content.txt",function(xhr,responseText){
xappList.render({"json":baidu.json.parse(responseText)});
var Drag = new IphoneDrag();
Drag.init({
container:'ListWrapper',
width:100,
height:100,
marginX:20,
marginY:20,
speed:80
});
});
版本历史
- 1.1.1 2012.5.15 将模版内容参数固定为模版字符串而不能是dom id
- 1.1.0 2011.7.6
- 1.0.0 2011.1.7
- 1.0.1 2011.1.17 去掉html属性;render将返回html语句(同html属性)
- 1.0.2 2011.4.12 修改“\”符号bug,去掉“\t”限制(感谢集鹄wjhu111提出bug)