2012-05-22 7 views
0

J'essaie de découper un modèle de moustache en plusieurs composants pour que je puisse les réutiliser et récupérer le texte assemblé via node.js. Je ne trouve personne qui ait fait ça.Node.js: Utilisation de plusieurs modèles de moustache

Je peux retourner doit faire mal avec les pages implique:

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

Je ne peux pas comprendre comment rendre un modèle et l'utiliser dans un autre modèle. Je l'ai essayé de le rendre séparément comme ceci:

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); 
} 

Mais le problème est que l'en-tête n'est pas rendu avant que la page et même si je que cela se produise. L'en-tête est vu comme texte d'affichage plutôt que comme HTML.

Toute aide appréciée.

Répondre

0

Vous devez mettre les lignes var stream = ... et util.pump(... dans headerStream.on('end', function() { /* here */ });, de sorte qu'ils sont couru après la headerStream a envoyé toutes les données à votre écoute data.

Pour inclure le code HTML brut, vous devez utiliser les accolades triples: {{{raw}}} dans votre modèle en tant que http://mustache.github.com/mustache.5.html états.

+0

J'ai essayé mais j'ai toujours eu des problèmes. Le premier étant que si je veux inclure plus d'un autre modèle. Et la seconde est que le html d'inclusion est rendu en tant que texte ('<' devient <) plutôt que d'être inclus en tant que texte brut. – drekka

0

Les gars de la moustache sont revenus avec la réponse. Je peux le faire en utilisant comme ceci partials:

{{> index.mu}} 

A l'intérieur du modèle de moustache plutôt que d'essayer de le faire en Node.js.

Questions connexes