给自己提个醒,渲染模版引擎handlebars已经足够好用了,不要再到处乱看浪费时间了。

<html>
<body onload="renderHello()">
<div id="target">Loading...</div>
<script id="template" type="x-tmpl-mustache">
Handlebars <b>{{doesWhat}}</b> <br>
{{loudHelper doesWhat}} <br>

{{{timeHelper time}}} <br>
{{time}} <br>

{{{listHelper names}}} <br>


{{#listHelper names}}
<b>{{firstName}}</b>
{{/listHelper}}



</script>


<br>
<br>

<script src="https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.min.js"></script>
<script>

function toDateString(values,field){
if (!field || !values){
return "";
}
field = field.trim();
var value = values[field];
if (!value){
return "";
}
var d = new Date(value);
return d.toDateString();
}


var tableColumns = [
{
title:"xxNo",
cell:"Handlebars: <div data-click='emit:aaa:aaa' href='/sss/sdsds'>xxNo: {{xxNo}}</div><div>yyNo: {{yyNo}}</div><div>日期: {{{timeHelper time}}}</div>",
}
];

function renderHello() {
var template = document.getElementById('template').innerHTML;
var compiled = Handlebars.compile(template);

Handlebars.registerHelper('loudHelper', function (aString) {
return aString.toUpperCase()
})


Handlebars.registerHelper('timeHelper', function (t) {
return new Date(t).toDateString();
})


Handlebars.registerHelper("listHelper", function(items, options) {
const itemsAsHtml = items.map(item => {
let s = item;
if (typeof options.fn === "function"){
const s1 = options.fn(item).trim();
if (s1.length > 0){
s = s1;
}
}
return "<li>" + s + "</li>"
});
return "<ul>\n" + itemsAsHtml.join("\n") + "\n</ul>";
});

document.getElementById('target').innerHTML = compiled({
doesWhat: "rocks!",
time: Date.now(),
names: [
"bbb",
{firstName:'fff'}
]
});
}
</script>
</body>
</html>
posted on 2022-09-22 00:08  袜子破了  阅读(45)  评论(1编辑  收藏  举报