之前写了一篇文章介绍dojo/string模块提供的模板处理函数substitute ,随之而来的一个问题是写模板字符串太麻烦了,涉及到转义等问题。
我的建议是将模板字符串写在一个单独文件中,然后使用dojo/text模块来加载(dojo loader的一个插件。关于loader插件的更多信息请参考http://blog.csdn.net/tt361/article/details/8125246),这样即省去了转义的烦恼又保证了js与html分离。这也是dojo小部件模板与js程序的组织方式,至于会增加向服务器端的请求嘛,构建完了会自动压缩到相应的js文件中。
具体做法如下:
假设模板文件名字为template.html,其中内容为
<div class="content">
<div class="title">${title}</div>
<div class="detail">${detail}</div>
<div class="info">${info}</div>
</div>
假设template.html放在templates子目录中,那么使用方法如下:
require(["dojo/dom", "dojo/string", "dojo/text!./templates/template.html"], function(dom, string, template){ var article = {title : "", detail : "", info : ""}; dom.byId("dom-id").innerHTML = string.substitute(template, article);});