好的,所以我是表达,模板和后端的新手。我一整天都在搜索这个问题无济于事。所以,我想我会在这里问。
如何在hogan-express,node.js,express应用程序中为除声明的全局模板以外的特定路由使用不同的模板?我仍然想使用partials,所以如果你指的是尝试不同的框架或其他东西,请记住这一点。 (不知道有多常见的偏见...)
以下是我从文档本身查看Hogan-express的代码(它已经从coffescript转换为常规javascript。)
var express = require('express');
var app = express();
// start example code from docs.
// I use code like this in my app.js/server.js file
app.set('view engine', 'html');
app.set('layout', 'layout'); // the global template as I explained above.
app.set('partials', {
foo: 'foo'
});
app.enable('view cache');
app.engine('html', require('hogan-express'));
// I have this function referenced from a different file...
// in my code I'll explain below.
app.get('/', function(req, res) {
res.locals = {
name: 'Andrew'
};
return res.render('template', {
partials: {
message: 'message'
}
});
});
我的代码如下所示
// in---file---> 'app.js'
var routes = require('./routes/index.js');
app.get('/', routes.index);
// ---in---file---> '/routes/index.js'
exports.index = function(req,res){
var template_data = {
posts : blogposts,
currentUser : req.user
};
res.render('index.html', template_data);
};
答案 0 :(得分:0)
您只需将layout:'layout2'
添加到您作为第二个参数发送到res.render
的template_data对象中。
// in---file---> 'app.js'
var routes = require('./routes/index.js');
app.get('/', routes.index);
// ---in---file---> '/routes/index.js'
exports.index = function(req,res){
var template_data = {
layout:'layout2', // this is the important addition.
posts : blogposts,
currentUser : req.user
};
res.render('index.html', template_data);
};
新布局适用于您声明的每个路径,但不会覆盖未以此方式声明的其他路线的全局模板。