0

タイトルが明確に述べているように、アプリケーションにDust.jsを実装したいと考えています。

、、、の 3 つのパラメーターをtmplReplaceContent受け取る関数を作成しました。templatejsontarget

私はmustache.jsでもそれを解決しました.バグがあると思いますが、約10時間かかりましたが、それでも問題をデバッグすることはできません. だから私はダストに移行することにしましたが、その優れた功績も理由です。

さて、もう一度質問します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/'

4

0 に答える 0