在做项目的时候,经常会遇到需要使用javascript给页面动态添加一大段HTML代码,结果会导致代码可读性大大降低,并难以维护,就像下面这样:
var htmls = ''; htmls += '<tr>'; htmls += "<td><input type='checkbox'></input></td>"; htmls += "<td>选项名:</td>"; htmls += "<td><input type='text'></input></td>"; htmls += "</tr>";
下面简单介绍一下Handlebars这个工具如何使用。
<div id='test' class="item"> <div class="bigtitle"> <span class="itemTitle">title</span> <span alt='test' class="upBtn"></span><span alt='test' class="downBtn"></span><span alt='test' class="closeBtn"></span> </div> <div> <span class="itemContent">yyyyyyyyyyyyyyyyyyyy</span> </div> </div>假如现在想要在HTML中动态加入下面代码,则可以像下面这样定义,并添加到</body>前面。
<script id="taskItem" type="text/x-handlebars-template"> <div id='{{id}}' class="item"> <div class="bigtitle"> <span class="itemTitle">{{title}}</span> <span alt='{{id}}' class="upBtn"></span><span alt='{{id}}' class="downBtn"></span><span alt='{{id}}' class="closeBtn"></span> </div> <div> <span class="itemContent">{{content}}</span> </div> </div> </script>id="taskItem"唯一标识这段代码,并将在后面调用。
{{id}}中的变量可以在下面的代码中被传入的参数赋值。
接下来利用这个模板生成HTML代码:
context为传入参数的键值对,对应代码中{{}}中的内容。
var source = $("#taskItem").html();var template = Handlebars.compile(source);
var content = {'id':id,'title':text,'content':contents};
var html = template(content );
html为最终生成的HTML代码片段。
通过$('#xxxx').html(html);就可以将这段代码添加到HTML中了。
以上只是Handlebars这个工具最基础的使用方法,Handlebars工具还蛮强大的,用法还远不止这些。
其他的一些用法会在以后的文章中介绍。