我正在使用几个域名来运行我的express.js应用程序。根据域,我想使用不同的视图:
app.set('views', path.join(__dirname, 'views', template));
我试图使用中间件来定义模板变量,但是似乎“它需要以另一种方式完成,因为节点应用程序说模板是未定义的。”
var domainConfig = function (req, res, next) {
if(req.get('host') == 'domainA') {
template = 'one';
} else {
template = 'two';
}
next();
}
答案 0 :(得分:0)
您没有在给变量赋值之前声明变量,也没有将其附加到以后可以访问的变量上。您可以这样改写:
var domainConfig = function (req, res) {
if(req.get('host') === 'domainA') {
res.template = 'one';
return;
}
res.template = 'two';
}
然后在级联的后面,您可以参考res.template
来查看正在使用的文件,并使用它来设置模板路径或其他内容。
答案 1 :(得分:0)
谢谢!我已经使用以下方法解决了我的问题:
res.render(path.join(__dirname, '../views', res.template 'viewname'), {...}
但是,静态文件存在问题。在请求之前,我在app.js中定义了它们:
app.use(express.static(path.join(__dirname, 'public', 'templatename'));
当我知道正在使用哪个域时,这是在请求后执行此操作的另一种方法吗?