Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使路由对一个ejs文件唯一_Javascript_Node.js_Express_Routes_Ejs - Fatal编程技术网

Javascript 使路由对一个ejs文件唯一

Javascript 使路由对一个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'); }); } 将专用页面路由置于通用页面路由之前就足够了

我想要一个像这样的URL
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页面或文件夹中的路由有不同的问题,请在完成此问题后接受答案(单击回答您问题的答案左侧的复选标记),你可以问一个关于其他主题的更具体的问题。或者,如果你认为这与这个问题有关,那么请澄清怎么做。