我有server.js文件,我定义了我的服务器和所有设置。
我需要在声明这些设置之前定义请求网址。因为我需要根据请求网址来定义它们。
一个例子:
var siteDir = ((app.route).lastIndexOf('/admin', 0) === 0) ? '/admin' : '/client';
app.engine('ejs', require('ejs-locals'));
app.set('views', __dirname + ('/template' + siteDir));
app.set('view engine', 'ejs');
因此,如果请求网址以'admin'开头,我将从admin文件夹加载模板,否则从客户端加载。
我当前的实现不起作用,因为app.route总是返回'/'。
我能在这做什么请给我一些建议。谢谢你提前。
答案 0 :(得分:2)
您无法使用Express设置每个请求的视图目录,这是您正在尝试执行的操作。
但您可以在调用res.render()
时使用子目录:
app.get('/admin/', function(req, res) {
res.render('admin/index'); // renders '__dirname + /template/admin/index.ejs'
});
app.get('/', function(req, res) {
res.render('client/index'); // renders '__dirname + /template/client/index.ejs'
});
答案 1 :(得分:-1)
你可以为此编写自己的中间件。
这样的事情:
var siteDir = "/client"; //default case;
app.use(function(req,res,next){
if(req.path == '/admin') siteDir = '/admin';
else siteDir = '/client';
next();
});
app.engine('ejs', require('ejs-locals'));
app.set('views', __dirname + ('/template' + siteDir));
app.set('view engine', 'ejs');