Backbone を使用してクライアント側で Jade テンプレートを使用したいと考えています。どうやってやるの?
今のところ、ビューで使用する Jade テンプレートをコンパイルするように Backbone (Marionette) を正常に構成しました。
Marionette.TemplateCache.prototype.compileTemplate = (tmplStr) ->
console.log "jade stuff: ", jade.compile(tmplStr)
return jade.compile(tmplStr)
「問題」は次のとおりです。現在、次のようなテンプレートを作成しています。
script(type="text/template", id="tmplMainView")
| h1= title
| p= content
|
Jade がサーバー側でパイプを解釈/解析しようとするのを防ぐためのパイプ ( ) に注意してください。どうすればそれらを排除できますか?
アップデート
おそらくjade --client
フラグを使用できます...しかし、それは単一のコンパイル済み関数を提供します:たとえば
h1= title
なる
function anonymous(locals, attrs, escape, rethrow, merge) {
attrs = attrs || jade.attrs; escape = escape || jade.escape; rethrow = rethrow || jade.rethrow; merge = merge || jade.merge;
var buf = [];
with (locals || {}) {
var interp;
buf.push('<h1>');
var __val__ = title
buf.push(escape(null == __val__ ? "" : __val__));
buf.push('</h1>');
}
return buf.join("");
}
つまり、テンプレートごとに 1 つの Jade/コンパイル済み JS が必要ですか? どのように使用すればよいですか?また、多くのJSファイルは動作が遅いと思いますか? しかし、テンプレート関数はすべて匿名で名前が付けられているため、それらを連結したり、何らかの方法で効果的に操作したりするにはどうすればよいでしょうか?