Dust.js实现,如果模板是硬编码的或要从其他位置获取,如果JSON是硬编码的或要获取的

时间:2012-12-23 04:22:44

标签: javascript jquery json mustache dust.js

由于标题明确指出我想在我的应用程序中实现dust.js

我创建了一个名为tmplReplaceContent的函数,它接受3个参数templatejsontarget

我已经在mustache.js中进行了解决,我认为我遇到了错误,花了我大约10个小时,但仍然没有运气调试错误。所以我决定转移到 dust ,但也因为它的好成就。

现在,对于这个问题,我想检查template是路径还是粉尘模板,如果是路径,那么$.get它是否正确它是一个模板,然后只是使用它,同样适用于json,如果它是一个路径,$.getJSON就可以使用它。

这是我的小胡子实现,正如您所看到的,正则表达式只检查单{{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/'

0 个答案:

没有答案