2016-10-08 25 views
1

server.js我有這樣的事情:從快車車把內使用helper返回HTML格式的代碼

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

然後在我helpers.js文件:

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; 

但隨後所產生的輸出strong幫手將其作爲<strong>...</strong>呈現。我將如何讓該字符串未轉義,我知道有Handlebars.SafeString(),但不知道如何使用它從這個快速句柄實例中。

回答

0

不知道如果我的理解是正確的,可能有點爲時已晚,但我有同樣的(或至少是smilar問題):

當我想表明我的內容{{VAR} }和var是例如<strong>somevar</strong>我作爲&lt;strong&gt;somevar&lt;/strong&gt;

我的解決方法是,變量不是通過默認的把手渲染器渲染的,它被渲染的問題,而是創建一個函數這樣做是爲了你:

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

而且在我.handlebars文件,我做了以下內容:

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

因此,它基本上像你一樣一樣的。我也試過你的代碼,它對我很有用。可能你沒有在把手文件中調用它?

1

要輸出原始HTML而不是轉義HTML,請使用三個大括號而不是兩個。

例如:

{{{strong}}} 

將輸出原始的HTML從助手:

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