尝试在视图页面(.hbs)中打印res.locals变量

时间:2015-11-26 11:15:08

标签: node.js express

我的控制器在usermains.js中看起来像这样。

var header = function (req, res, next) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.locals.title="helloooo";
res.write(loadView('headerpage'));
console.log(res.title);
next();
};
app.get('/log',header,values,renderBody);

这是我的loadview函数

var loadView = function(name, locals) {
if(name=='main'){
console.log(path.join('views/layouts/'+name + '.hbs'));
var template = fs.readFileSync(path.join('views/layouts/'+name +'.hbs')).toString();
 }else{
console.log(path.join('views/'+name + '.hbs'));
var template = fs.readFileSync(path.join('views/'+name +  '.hbs')).toString();
}
return template;
};

我在视图页面上调用它。

{{title}}

它在浏览器上输出{{title}}。如何在视图页面上获取res.locals.title值。谢谢!

1 个答案:

答案 0 :(得分:0)

使用Handlebars首先编译,然后执行模板,传递您希望的相应数据。只需读取/加载模板即可获得原始数据。使用类似的东西(根据您的需要调整它,这只是一个样本):

var handlebars = require('handlebars');
var rawTemplate = fs.readFileSync(path.join('views/'+name +  '.hbs')).toString();
var compiledTemplate = handlebars.compile(rawTemplate);
var result = compiledTemplate(dataPassedToTemplate);

res.write(result);