私は can.js を使用しており、テンプレートをプリコンパイルしてロードしようとしています。テンプレートを取得し、can-compileを使用してプリコンパイル し、結果のスクリプト ファイルに次のようにロードしました。
(function(window) {
can.Mustache('block_tpl.mustache', '<template string goes here>');
}(this));
「can.Mustache」で登録しているとは思えませんか?コンパイル済みのテンプレートを can.js に登録する方法を知っている人はいますか?
編集:
@Daff、can.Mustacheを使用すると(私はcan.jqueryを使用しています)、(a)can.mustacheが未定義であり、(b)たとえば次のように入力した場合:
can.Mustache('jim_tpl', "<p>My name is Jim</p>");
...Mustache コンストラクターに到達すると、次のようになります。
var Mustache = function(options, helpers) {
if (this.constructor !== Mustache) {
var mustache = new Mustache(options);
return function(data, options) {
return mustache.render(data, options);
};
}
if (typeof options === "function") {
this.template = {fn: options};
return;
}
can.extend(this, options);
this.template = this.scanner.scan(this.text, this.name);
};
...新しい Mustache を構築する場所 (ln. 3) で、テンプレート名をオプション引数として渡します。それをスキャナーに渡すまでに、テンプレート名の文字列であった下部の「オプション」の fn は、各プロパティがその文字列の 1 文字であるオブジェクトになります...