Javascript 使路由对一个ejs文件唯一
我想要一个像这样的URLJavascript 使路由对一个ejs文件唯一,javascript,node.js,express,routes,ejs,Javascript,Node.js,Express,Routes,Ejs,我想要一个像这样的URLlocalhost3000/hh234due,具有唯一的id,以路由到特定的页面,但是我所做的与其他路由冲突 如何使/:id对一个视图唯一 module.exports = function (app) { app.get('/:id', function (req, res) { res.render('page/index'); }); } 将专用页面路由置于通用页面路由之前就足够了
localhost3000/hh234due
,具有唯一的id,以路由到特定的页面,但是我所做的与其他路由冲突
如何使/:id对一个视图唯一
module.exports = function (app) {
app.get('/:id', function (req, res) {
res.render('page/index');
});
}
将专用页面路由置于通用页面路由之前就足够了,如下所示:
module.exports = function (app) {
app.get('/hh234due', function (req, res) {
res.render('<your special page>');
});
app.get('/:id', function (req, res) {
res.render('page/index');
});
}
module.exports=函数(应用程序){
app.get('/hh234due',函数(req,res){
res.render(“”);
});
app.get('/:id',函数(req,res){
res.render(“页面/索引”);
});
}
因为路由是按顺序测试的,所以将它放在序列中的最后一个,它与之冲突的任何内容都将优先于它。一般来说,这只是一个有问题的做法,因为
app.get('/:id', ...)
匹配每一个可能的顶级路由,并与您希望/需要的站点工作中的其他顶级路由发生冲突
您可以通过始终将其作为最后一个可能的路由定义来实现,但我建议将URL更改为
http://localhost:3000/id/hh234due
然后您可以使用:
app.get('/id/:id', ...)
与其他顶级路线没有任何冲突
这样做时,URL结构也更具声明性,因为
/id
部分清楚地说明了此URL是什么,而不是以前您更依赖于这样一个事实,即它看起来不像站点上的任何其他顶级路由,所以“我猜”它必须是一个id,对于将来可能在此网站上工作的其他开发人员来说,该id不是声明性的或清晰的。创建404页面时,如果您的所有路线都以不同的方式排列,该怎么办folders@coder-这些评论我都不理解。我建议您使用http://localhost:3000/id/hh234due
作为URL和app.get('/id/:id',…)
作为路由定义,与404页面或文件夹中的路由完全无关。您可以对404页面或文件夹中的路由执行任何您想执行的操作,因为这与我的答案(或您的问题)无关。@coder-如果您对404页面或文件夹中的路由有不同的问题,请在完成此问题后接受答案(单击回答您问题的答案左侧的复选标记),你可以问一个关于其他主题的更具体的问题。或者,如果你认为这与这个问题有关,那么请澄清怎么做。