如果URL包含'todos',例如'... / todos / *',他应该加载不同的EJS模板(todos.ejs)。如果URL不包含'todos',则正常的index.ejs将加载。
我尝试了类似下面的内容,但我认为使用app.get
是错误的。
if (req.url.indexOf("todos") >= 0) {
app.get('/todos/*', function(req, res) {
res.render('todos', {
title: 'todos page'
});
});
} else {
app.get('/', function(req, res) {
res.render('index', {
title: 'index page'
});
});
}
答案 0 :(得分:3)
您可以将regular expressions to match URL paths与Express一起使用,所以:
// Match any URL with '/todos/' in the path:
app.get(/\/todos\//, function(req, res) {
res.render('todos', { title: 'todos page' });
});
// Match the rest:
app.get('*', function(req, res) {
res.render('index', { title: 'index page' });
});
如果您不关心“todos ”周围的斜线,匹配将变为:
app.get(/todos/, ...);
请注意,声明路由处理程序的顺序很重要:您希望最先声明最具体的匹配(“todos”),最后声明最少(“其余”)。
答案 1 :(得分:2)
就是这样的。
app.get('*', function(req, res) {
if (req.url.indexOf("todos") >= 0) {
return res.render('todos', {
title: 'todos page'
});
}
res.render('todos', {
title: 'todos page'
});
});
答案 2 :(得分:2)
试试这个
app.get('*', (req, res) => {
if (req.url.indexOf('todos') === -1) {
return res.render('index', { title: 'index page'})
}
else {
return res.render('todos', { title: 'todos page' })
}
})