2012-05-22 67 views
0

我想将小胡子模板分解成各种组件,以便我可以重复使用它们,并获取通过node.js.返回的组合文本。我找不到这样做的人。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。

任何帮助表示赞赏。

回答

0

你需要把线var stream = ...util.pump(...headerStream.on('end', function() { /* here */ });,使它们在headerStream后跑已经发送的所有数据到你的data听众。

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

+0

我尝试过,但仍遇到问题。首先是如果我想包含多个其他模板。第二种是包含的html被呈现为文本('<'变成<),而不是作为原始文本包含。 – drekka

0

胡子家伙回来的答案。我可以用谐音这样做:

{{> index.mu}} 

里面的胡子模板,而不是试图做到这一点在node.js中