正如标题清楚地表明我想在我的应用程序中实现dust.js。
我创建了一个名为的函数tmplReplaceContent
,它接受 3 个参数template
, json
,target
我也在mustache.js中解决了这个问题,我认为我遇到了错误,花了我大约 10 个小时,但在调试错误方面仍然没有运气。所以我决定转战尘埃,也是因为它的好战绩。
现在,对于这个问题,我想检查template
是路径还是灰尘模板,如果是路径,那么$.get
它,如果是模板,那么就使用它,同样适用于json
,如果是路径照$.getJSON
原样使用它。
这是我的mustache实现,如您所见,正则表达式仅检查单个{{template}}
并且如果我有复杂的模板将不起作用,如果进行复杂的检查很麻烦,我将只从文件中获取所有模板。
tmplReplaceContent : function(json, tmpl, target) {
var regex = new RegExp("\{{[a-zA-Z\.\_]*\}}"),
view = '';
function setOutput(template) {
var content = Mustache.render(template, view);
$(target).html(content).hide().fadeIn();
}
function doJSON(json) {
view = json;
if(!regex.test(tmpl)){
/* get mustache tmpl from the path */
$.get(msi.vars.tmpl_url + tmpl + '.mustache', setOutput);
} else {
setOutput(tmpl);
}
}
/* json -> check if object */
if (typeof json === 'object') {
doJSON(json);
} else {
/* getJSON from the path */
$.getJSON(msi.vars.base_url + json, doJSON);
}
}
你有什么比我想象的更好的实现吗?这种实施的缺点是什么?谢谢!
编辑: tmpl 作为路径的示例:
templates/default
或者可以是
default
因为我已经设置了实现msi.vars.tmpl_url = base_url + 'public/templates/'