我试图理解我是否可以通过res.render()函数或以其他方式呈现多组视图。
在home.handlebars中我有以下代码
<h1>Home</h1>
我希望将其复制到默认布局中“N”次。
据我所知,查看.render()函数提交整个传输,所以如果我写多个res.render(); res.render();不会起作用。
我是从一个完全错误的方面接近这个还是我错过了什么? 我是否需要创建一个“动态”视图,而不是一次性传递给res.render()?
感谢。
用于测试目的的附加代码:
var express=require('express');
var app=express();
// set up handlebars view engine
var handlebars = require('express-handlebars').create({ defaultLayout:'main' });
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
app.set('port', process.env.PORT || 8888);
app.use(express.static(__dirname+'/public'));
app.get('/', function(req, res) {
res.render('home');
res.render('home');
res.render('home');
});
// 404 catch-all handler (middleware)
app.use(function(req, res, next){
res.status(404);
res.render('404');
});
// 500 error handler (middleware)
app.use(function(err, req, res, next){
console.error(err.stack);
res.status(500);
res.render('500');
});
app.disable('x-powered-by');
app.listen(app.get('port'),function(){
console.log('express started on port:'+app.get('port'));
});
答案 0 :(得分:0)
是的,你可以,这里是我使用的一些代码帮助做到这一点。我在我的视图目录中有一个partials目录,我来自。
目录结构:
package.json
/lib/app.js
/templates/offering-links/handlebars
/partials/offering-links-script/handlebars
使用部分的帮助程序代码:
function partialsHelper (request, response, next) {
response.renderPage = function (template, options, callback) {
var partials = (options && options.partials) || {};
partials.footer = path.join("partials", "footer");
partials.header = path.join("partials", "header");
options.partials = partials;
//disable cache for dynamic content
if (request.method === "GET") {
response.setHeader("Cache-Control", "no-cache");
}
// TODO: figure about max-age for cachable content
return response.render(template, options, callback);
};
return next();
}
app.use(partialsHelper);
然后调用renderPage。
response.renderPage(
"offering-links",
{
title: "Offering Links",
offerings: offerings,
partials: {
script: path.join("partials", "offering-links-script")
},
baseURL: contextRoot
}
);