2016-10-08 6 views
1

In server.js zurückkehren ich so etwas wie diese:Mit Helfern aus Express-Lenker im HTML-Format Code

var express = require('express'); 
var path = require('path'); 
var exphbs = require('express-handlebars'); 

var app = new express(); 

var handlebars = require('./helpers.js')(exphbs); 

app.set('views', path.join(__dirname, 'views')); 

app.engine('.hbs', handlebars.engine); 


app.set('view engine', '.hbs'); 

app.set ('port', (process.env.PORT || 5000)); 

app.get('/', function(req,res){ 
    res.render('home', { 
     title: 'Express App with Handlebars templates', 
     content: 'This is some content', 
     persons: [ 
      { 
       name: 'branchito', 
       instrument: 'guitar', 
      }, 
      { 
       name: 'joe', 
       instrument: 'flute', 
      }, 
     ] 
    }); 
}); 



app.listen(app.get('port'), function(){ 
    console.log('Server started on port ' + app.get('port')); 
}) 

Und dann in meiner helpers.js Datei:

function hbsHelpers(hbs) { 
    return hbs.create({ 
    helpers: { // This was missing 
     inc: function(value, options) { 
     console.log('reading it'); 
     return parseInt(value) + 1; 
     }, 
     strong: function(text) { 
      return '<strong>' + text + '</strong>'; 
     } 

     // More helpers... 
    } 

    }); 
} 

module.exports = hbsHelpers; 

Aber dann ist der Ausgang erzeugt durch strong helper rendert das als <strong>...</strong> .. Wie würde ich gehen, um diese Zeichenfolge unescaped zu haben, ich weiß, es gibt Handlebars.SafeString(), aber weiß nicht, wie man es von dieser Express-Lenker-Instanz zu verwenden ..

Antwort

0

nicht sicher, ob ich es richtig bin Verständnis und wahrscheinlich ein wenig zu spät, aber ich hatte das gleiche (oder zumindest eine smilar Ausgabe):

Wenn ich wollte meinen Inhalt zeigen mit {{var} } und var war zB <strong>somevar</strong> Ich hatte das Problem, dass es als &lt;strong&gt;somevar&lt;/strong&gt;

Meine Abhilfe, dass der Variable nicht durch den Standard-Lenker Renderer gerendert wurde gemacht wurde, aber eine Funktion, die für Sie zu schaffen machen:

var hbs = exphbs.create({ /* ... */ helpers: { raw: function (a) { return a; }, } });

Und in meiner .handlebars Datei habe ich folgendes:

<p>{{#raw var}}{{/raw}}</p>

Also, es ist im Grunde das gleiche wie Sie. Ich habe deinen Code auch ausprobiert, und es hat für mich funktioniert. Wahrscheinlich nennst du es nicht direkt in der Lenkerakte?

1

Geben Sie anstelle von maskiertem HTML-Code drei geschweifte Klammern statt zwei ein.

Zum Beispiel:

{{{strong}}} 

Will Ausgabe des rohen HTML vom Helfer:

strong: function(text) { 
    return '<strong>' + text + '</strong>'; 
} 
Verwandte Themen