1

我在 Dust js 中有一个示例模板,并使用dust-down 编译了该源代码。

当我将(使用脚本标签)模板 js 添加到我的代码中时,我可以在控制台中看到已编译的对象。但是我怎样才能使用那个对象呢?

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-down 如何使用编译,它使用基本文件名作为键,这就是您想要传递给dust.loadSource() 的内容。

......所以,让我们把它们放在一起......

  1. 从文件“intro.html”开始作为您的模板。
  2. 使用dust-down编译它。我假设结果将是这样(如果您没有在命令行上指定除尘,则 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 回答