Node.js express.js路由代码定位是否重要?
定位路线代码是否重要 我询问的原因是,当我定位res.render(“新”)代码时 朝页面下方,路由无效。如果我把它放得更高,它会相应地移动。例如Node.js express.js路由代码定位是否重要?,node.js,express,Node.js,Express,定位路线代码是否重要 我询问的原因是,当我定位res.render(“新”)代码时 朝页面下方,路由无效。如果我把它放得更高,它会相应地移动。例如 router.get("/tag/:id", controller.showBlog); router.get("/:id/edit", controller.editBlog); router.get("/new", function (req, res) { res.render("new")}); 上面的代码。。无法路由到新的.ej
router.get("/tag/:id", controller.showBlog);
router.get("/:id/edit", controller.editBlog);
router.get("/new", function (req, res) {
res.render("new")});
上面的代码。。无法路由到新的.ejs。。。没有错误,将我推回索引
router.get("/new", function (req, res) {
res.render("new")});
router.get("/tag/:id", controller.showBlog);
router.get("/:id/edit", controller.editBlog);
上面的代码。。能够路由到new.ejs
更新已解决
虽然显示的示例代码与上面的代码不完全相同,
这确实是由于get(“/new”)之上的get(“/:id”)路由导致的
导致在到达(“/new”)之前调用(“/:id”)。
换句话说,定位路线很重要
我还运行了set DEBUG=express:&node app.js
这是工作预期结果的日志
这是我的路由代码放置错误的日志
一个行项目显示了一些不正确的地方
您应该在匿名函数中包装
showBlog
和editBog
。另外,我不确定语法是controller.showBlog
还是controller.showBlog()
具有匿名功能:
router.get("/tag/:id", (req,res)=>{controller.showBlog()});
router.get("/:id/edit",(req,res)=>{controller.editBlog()});
router.get("/new", function (req, res) {
res.render("new")});
这些是应用程序中唯一的路由吗?对于您描述的路线,这不重要。但请考虑以下内容:
app.get('/:id', function (req, res) {
// this will match all /a, /b .. including /new
res.end('done!');
});
app.get('/new', function (req, res) {
// this is never called
res.end('done!!');
});
在上述场景中,将永远不会调用
/new
处理程序。仅使用该代码进行调试是很困难的,但您可能会幸运地使用express的调试模式来查看发生奇怪行为的确切原因:
使用以下方式启动应用程序:
DEBUG=express:*node index.js
你完全正确。。。我在上面有一个get('/:id'),在进入实际get('/new')之前先捕获/new。换句话说,路线的定位很重要。谢谢分享。显然,问题确实是由于路线的定位。无论如何,您共享的调试express非常有用。谢谢