【发布时间】:2014-11-19 08:57:51
【问题描述】:
我想在 Node Express 中设置可扩展的路由。
我了解如何设置工作路线...这是我正在努力解决的失败/不匹配问题。更具体地说,我正在努力解决如何处理 404 错误。
这就是我所拥有的......
app.get('/:folder',function(req,res) {
var path = 'site/' + req.params.folder + '/index.jade';
res.render(path);
});
app.get('/:folder/:topic',function(req,res) {
var path = 'site/' + req.params.folder + '/' + req.params.topic;
res.render(path);
});
app.use(function(req, res, next){
res.status(404).render('site/404.jade');
});
挑战在于, :folder 和 :topic 将匹配任何内容,因此 404 永远不会触发。我不想硬编码我们所有的文件夹和主题名称。那么,如果文件夹/主题不存在,我该如何设置路由,以便请求将通过 404?
谢谢。
更新
最终,工作解决方案如下。感谢大家。
var fs = require('fs');
app.get('/:folder',function(req,res,next) {
var path = __dirname + '/views/site/' + req.params.folder + '/index.jade';
if(fs.existsSync(path))
{
res.render(path);
}
else
{
next();
}
});
app.get('/:folder/:topic',function(req,res,next) {
var path = __dirname + '/views/site/' + req.params.folder + '/' + req.params.topic + '.jade';
if(fs.existsSync(path))
{
res.render(path);
}
else
{
next();
}
});
app.use(function(req, res){
res.status(404).render('site/404.jade');
});
【问题讨论】:
-
感谢大家的建议。