如何预编译灰尘模板

时间:2015-07-26 18:31:54

标签: dust.js dustc

dust-compiler -s controllers/inbox/views/inbox.dust -d    public/js/custom/inbox/messages.js

但我收到错误

 if (err) throw err;
               ^
Error: ENOTDIR, scandir 'C:\jbk\buy2gthr-master\controllers\inbox\views\inbox.dust'
    at Error (native)

我有inbox.dust文件:

{>"../../../layout/layout"/}

 {<css-content}
 {/css-content}
 {<page-content}
 {/<page-content}
     <script id="entry-template" type="text/x-tmpl">
                  {title}
                    <ul>
                        {#data}
                        <li>{name}</li>{~n}
                        {/data}
                    </ul>
     </script>
**<div id="output"></div>**
 {/page-content}
 {<script-content}
 <script src='/js/custom/inbox/inbox.js'></script>
 <script src='https://cdnjs.cloudflare.com/ajax/libs/dustjs-linkedin/2.7.2/dust-full.js'></script>
  {/script-content}

和inbox.js文件

$(document).ready(function () {
    var data = {
        "title": "Famous People", 
        "names" : [{ "name": "Larry" },{ "name": "Curly" },{ "name": "Moe" }]
    }

    var source   = $("#entry-template").html();
    var compiled = dust.compile(source, "intro");
    console.log(compiled);

    dust.loadSource(compiled);

    dust.render("intro", data, function(err, out) {
        if(err) console.log(err);
        else
        console.log(out);

        $("#output").html(out);
    });
});

我仍在接受

<div id="output"><ul></ul></div>

1 个答案:

答案 0 :(得分:0)

我不确定您使用的是哪种灰尘编译器,但只使用dustc - 它附带了Dust。

您可以阅读all the dustc API options,但要预编译单个文件,您可以执行类似

的操作
dustc controllers/inbox/views/inbox.dust --output=public/js/custom/inbox/messages.js

dustc使用绝对名称而不是相对名称来编译模板,因为Dust不是文件系统感知的。除非您专门设置了dust.onLoad函数来处理相对路径,否则您希望使包含看起来像{> "inbox/messages" /}