如何预编译灰尘模板

how to precompile a dust template

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>

我不确定您使用的是什么 dust 编译器,但只需使用 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" /}.