You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express路由疑问:为何users.js中用router.get('/')而非router.get('/users')

关于Express路由挂载路径的解释

嗨,这个问题其实是Express里**路由挂载(Router Mounting)**的核心设计,我来给你讲明白为啥要这么写~

首先,你要理解app.use('/users', users)这行代码的作用:它相当于给整个users路由模块里的所有路由,统一加上了一个路径前缀/users。也就是说,users.js里定义的路由路径,都会自动和这个前缀拼接在一起,形成最终的访问路径。

举个具体的例子:

  • 你在users.js里写router.get('/'),最终匹配的实际路径是/users/(Express还会自动兼容不带末尾斜杠的/users请求)
  • 如果以后你在users.js里加一条router.get('/profile'),那实际访问路径就是/users/profile

这种设计的好处太明显了:

  • 模块化维护更方便:路由模块只需要关注自己的子路径逻辑,不用重复写相同的前缀。比如哪天你想把用户相关的路径从/users改成/members,只需要修改app.js里的挂载路径,不用去users.js里改每一条路由
  • 路由职责更清晰:每个路由模块只负责自己业务域内的路径,代码结构更清爽

回到你的代码:
app.js里的app.use('/users', users)是“父路径”,users.js里的router.get('/')是这个父路径下的“子路径”,两者组合起来才是完整的访问路径。要是你在users.js里写成router.get('/users'),那最终路径就会变成/users/users,反而不是你想要的结果啦!

你可以启动服务测试一下:访问http://localhost:3000/users(假设你的服务端口是3000),就能触发users.js里的那个路由处理函数,这样就能直观感受到这个机制的作用了。

内容的提问来源于stack exchange,提问作者Osiris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:57:59