1

Dust js にサンプル テンプレートがあり、ダストダウンを使用してそのソースをコンパイルしました。

そのテンプレート js をコードに (script タグを使用して) 追加すると、コンパイルされたオブジェクトをコンソールで確認できます。しかし、どうすればそのオブジェクトを使用できますか?

Example :

Created a compile file with the name dusttest.js and included it in my HTML page.
In firebug console, i am able to view the object like dust.cache.dusttest

オブジェクトをそのコンパイル済みオブジェクトに渡すにはどうすればよいですか? 他の方法では、dust.render("dusttest",obj,function(){}) の代わりに、コンパイルされたオブジェクトを直接使用するにはどうすればよいですか?

4

1 に答える 1

2

私はダストダウンを使用したことはありませんが、最新のソース コードを確認しました。
これらは、実際のコンパイルを行う行です。

var filename = filepath.split("/").reverse()[0].replace(".html", "").replace(".dust", "");
file_to_create = file_to_create + "\\" + filename + "_"  + version + ".js";

//compile to dust
// notice the second parameter to compile() is the BASE of the filename!
var compiled = dust.compile(data, filename);

Dust.compile() を使用しているため、使用方法はドキュメントと同じにする必要があります。コンパイル結果はjavascriptなので、通常のjsスクリプトと同じように参照してください。

<script type='text/javascript' src='/mycompilecode/mytemplate-1.0.js'></script>

docsによると、コードが読み込まれると、dust.register() メソッドが含まれて実行され、その後使用できるようになります。

上記のダストダウンがコンパイルを使用する方法に気付いた場合は、ベース ファイル名をキーとして使用します。これが、dust.loadSource() に渡したいものです。

…というわけで、まとめてみましょう…

  1. テンプレートとしてファイル「intro.html」から始めます。
  2. ダストダウンを使用してコンパイルします。結果は次のようになると思います (コマンドラインでダストダウンを指定しない場合、0_0_1 がデフォルトのバージョンです): /templates/compiled/intro_0_0_1.js

次のコードは、それがどのように使用されるかを示しています (ダストが既にロードされていると仮定します)。

<script type='text/javascript' src='/templates/compiled/intro_0_0_1.js'></script>
<script type='text/javascript'>
    var myCompiledTemplateKey = 'intro'; // notice! no version or .js extension
    dust.loadSource(myCompiledTemplateKey );
    dust.render(myCompiledTemplateKey , {name: "Fred"}, function(err, out) {
        console.log(out);
    });
</script>
于 2012-07-24T01:51:36.640 に答える