我的控制器在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值。谢谢!
答案 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);