简单的js模板实现,不支持for循环和if判断哪些
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Simple Templating</title>
</head>
<body>
<div id="content" style="border:1px solid red;"></div>
<script type="template" id="template">
<h2>
<a href="{{href}}">
{{title}}
</a>
</h2>
<img src="{{imgSrc}}" alt="{{title}}">
</script>
<script type="text/javascript">
var data = [
{
title : 'php web appliaction',
href : 'http://www.baidu.com',
imgSrc : 'http://www.baidu.com'
},
{
title : 'js 权威指南',
href : 'http://www.qq.com',
imgSrc : 'http://www.qq.com'
}];
var template = document.querySelector('#template').innerHTML;
function _template(template, data){
var i = 0,
len = data.length,
fragment = '';
function replace(obj){
var t, key, reg;
for(key in obj){
reg = new RegExp('{{' + key + '}}', 'ig');
t = (t || template).replace(reg, obj[key]);
}
return t;
}
for(; i < len; i++){
fragment += replace(data[i]);
}
return fragment;
}
console.log(_template(template, data));
document.querySelector("#content").innerHTML=_template(template, data);
</script>
</body>
</html>
自己业务使用改进了下
/模板方法 function _temp(template, data){ var i = 0, fragment = ''; function status(v){ var str =v ; if(v==0){ str="审批不通过"; }else if(v==1){ str="审批中"; }else if(v==2){ str="放款成功"; }else if(v==3){ str="放款失败"; }else if(v==4){ str="支付成功"; }else if(v==5){ str="支付失败"; }else if(v==6){ str="已受理"; } return str; } function replace(obj){ var t, key, reg,v; for(key in obj){ reg = new RegExp('{{' + key + '}}', 'ig'); if(key=="STATUS"){ v=status(obj[key]); }else if(key=='LOAN_DATE'){ v=new Date(obj[key]).format("yyyy-MM-dd hh:mm:ss"); }else if(key=='LOAN_EXPIRE'){ v=new Date(obj[key]).format("yyyy-MM-dd"); }else{ v=obj[key]; } t = (t || template).replace(reg, v); } return t; } fragment += replace(data); return fragment; }