使用预编译模板的Dust.js客户端呈现问题

时间:2014-08-05 13:32:04

标签: javascript dust.js client-side-templating

我正在尝试使用预编译的灰尘模板测试一个简单的客户端渲染,但是当我尝试渲染时,灰尘会抱怨它无法找到我的模板:

[DUST WARN]: Chunk error [Error: Template Not Found: basicName] thrown. Ceasing to render this template. 

我的页面如下:

<!DOCTYPE html>
<html lang="en-US">
<head>
    <script type="text/javascript" src="dust-full-2.4.js"></script>
    <script type="text/javascript" src="basicName.js"></script>
</head>
<body>
    <div id="dustContainer"></div>
    <script>
        var json_payload = { "name": {
            "firstName" : "Brock",
            "lastName" : "Sampson"
        }};
        var dustContainerDiv = document.getElementById("dustContainer");

        dust.render("basicName", json_payload, function(err, out) {
                dustContainerDiv.innerHTML = out;
        });
    </script>
</body>
</html>

我的模板文件(basicName.tl):

<p>{name.firstName}</p><p>{name.lastName}</p>

编译为此(basicName.js):

(function(){dust.register("basicName.tl",body_0);function body_0(chk,ctx){return chk.write("<p>").reference(ctx.getPath(false, ["name","firstName"]),ctx,"h").write("</p><p>").reference(ctx.getPath(false, ["name","lastName"]),ctx,"h").write("</p>");}return body_0;})();

我使用客户端模板编译测试了相同的模板/有效负载/ html,一切正常。为了能够使用预编译的模板,我缺少什么?

1 个答案:

答案 0 :(得分:2)

如果仔细查看已编译的灰尘模板,可以使用一行代码:

... dust.register("basicName.tl", ...

这行代码在key&#34; basicName.tl&#34;下添加了编译模板。进入dust.cache

引擎盖dust.render将尝试在dust.cache

中找到给定的模板名称

以下代码不会起作用,因为灰尘无法找到&#34; basicName&#34; dust.cache中的模板:

dust.render("basicName", json_payload, function(err, out) {
...

这样打电话应该有效:

dust.render("basicName.tl", json_payload, function(err, out) {
...