0

我正在尝试将 mustache 模板分解为各种组件,以便我可以重用它们,并通过 node.js 返回组合文本。我找不到做过这件事的人。

我可以返回必须疼痛的页面暗示:

function index(request, response, next) {
    var stream = mu.compileAndRender('index.mu', 
        {name: "Me"}
        );
    util.pump(stream, response);
}

我只是不知道如何渲染模板并在另一个模板中使用它。我试过像这样单独渲染它:

function index(request, response, next) {
    var headerStream = mu.compileAndRender('header.mu', {title:'Home page'});
    var headerText;

    headerStream.on('data', function(data) {
       headerText = headerText + data.toString();
    });

    var stream = mu.compileAndRender('index.mu',        
        {
            heading: 'Home Page',
            content: 'hello this is the home page',
            header: headerText
        });
    util.pump(stream, response);
}

但问题是标题没有在页面之前呈现,即使我做到了。标题被视为显示文本而不是 html。

任何帮助表示赞赏。

4

2 回答 2

0

您需要将行var stream = ...util.pump(...in 放入headerStream.on('end', function () { /* here */ });,以便在headerStream将所有数据发送到您的data侦听器之后运行它们。

要包含原始 HTML,您必须使用三重大括号:{{{raw}}}在您的模板中,如 http://mustache.github.com/mustache.5.html状态。

于 2012-05-22T03:56:55.933 回答
0

小胡子家伙带着答案回来了。我可以通过使用这样的部分来做到这一点:

{{> index.mu}}

在 mustache 模板中,而不是尝试在 node.js 中进行。

于 2012-05-24T02:08:20.677 回答