原本是在jquery上看到的template的用法(http://api.jquery.com/jQuery.template/),不过发现它不是包括在jquery包中的,要单独下载插件。下载后试用,发现一个问题:
如果我插入的是一个HTML的片段,执行后这个template会转义。但是也没有深入研究代码。想到以前我曾经扩展过jquery的一些基础函数,这个项目在 http://code.google.com/p/jbasicext/ ,是我很早以前还在弄django时写的。当时就已经有一个template的函数,不过那是是学propertype.js,直接在String对象上进行的扩展。于是这次是直接重写了一个template函数,方法如下:
var template = function(tmp_string, hash_or_array){
function _replace(m, word){
var r;
if (Boolean(word.match(/^[0-9]+$/)) && hash_or_array.constructor == Array)
r = hash_or_array[parseInt(word)];
else
r = hash_or_array[word];
if(r == undefined) return '';
else return r;
}
return $(tmp_string.replace(/\$\{?([A-Za-z_0-9]+)\}?/g, _replace));
}
使用方法如下:
上面是使用${name}形式的变量。这个函数还可以使用${n}这种数字形式。如:
UPDATE:在网上学习了一下,原来John Resig早在2008年就写过一个更强大的微模板 http://ejohn.org/blog/javascript-micro-templating。在其中更可以使用javascript语句,而不仅仅是变量替换。
另外,为了方便定义模板可以这样:
<script type="text/html" id="commentTemplate">
<li>${name}</li>
</script>
类别:Web 查看评论







