为什么我不能直接粘贴粉尘网站生成的代码?

时间:2014-01-16 03:12:34

标签: dust.js

现在我很容易写了一个模板:

Hello, my name is {name}, I'm {age}.

然后打开这个网站:http://linkedin.github.io/dustjs/test/test.html,做一些粘贴,模板js代码生成如下:

(function() {
  dust.register("demo", body_0);

  function body_0(chk, ctx) {
    return chk.write("Hello, my name is ").reference(ctx._get(false, ["name"]), ctx, "h").write(", I'm ").reference(ctx._get(false, ["age"]), ctx, "h").write(".");
  }
  return body_0;
})();

然后我创建了一个js文件并复制上面生成的所有js代码并将其引用到我的应用程序中:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>DustDemo</title>
    <script src="jsfiles/dust.js"></script>
    <script src="jsfiles/staticpagetemplate.js"></script>

    <script>
        function Demo1() {
            dust.render("demo", { name: "test", age: 13 }, function (err, out) {
                alert(out);
            });
        }
    </script>
</head>
<body onload="Demo1()">
    <h1>Demo 1——Static Page</h1>
    <div id="divDemo1">
    </div>
</body>
</html>

问题是,如果我这样使用,它会报告我找不到“_get”。后来我发现了dust.js中的问题:

Context.prototype.get = function (key) {
        var ctx = this.stack, value;

        while (ctx) {
            if (ctx.isObject) {
                value = ctx.head[key];
                if (!(value === undefined)) {
                    return value;
                }
            }
            ctx = ctx.tail;
        }
        return this.global ? this.global[key] : undefined;
    };

所以没有“_get”而是“get”而不是!

为什么这个MISMATCHES翻译在线?任何人都可以帮助我?

1 个答案:

答案 0 :(得分:0)

您可能在jsfiles/dust.js中使用旧版本的Dust。截至Dust 2.2.0 get已替换为_gethttp://linkedin.github.io/dustjs/test/test.html上的编译器使用新版本的Dust,因此它使用_get而不是get编译模板。

您已使用新版本的Dust编译模板,但是您尝试使用旧版本的Dust渲染它,​​并且两者不兼容。