Express的app.get()中*路由是什么含义?和/路由作用相同吗?
关于Express中
*通配符路由的说明 *路由的含义
你贴的这段是PERN栈生产部署的标准配置,其中app.get("*")里的*是Express的路由通配符,代表匹配所有未被前面路由匹配到的GET请求路径。
这段逻辑是为了适配React这类单页应用(SPA)的前端路由:
- 首先
express.static会优先匹配build目录下的静态资源(打包后的JS、CSS、图片等),匹配到就直接返回,不会走到后续路由 - 剩下的所有请求,不管你访问的是
/profile、/dashboard/settings这类前端路由,都会返回React打包出来的index.html,把路由控制权交给前端的React Router处理,避免用户刷新非根路径页面时出现404。
和/路由的区别
二者作用完全不同,核心差异是匹配范围:
- 路径为
/的路由只能匹配根路径的GET请求,只有用户直接访问站点根域名时才会触发。如果用户访问/about这类子路径,根本匹配不到/路由,会直接返回404,完全满足不了SPA前端路由的部署需求 *是兜底路由规则,只有前面所有路由(接口路由、静态资源规则)都没匹配到的时候才会触发,既不会干扰后端接口的正常响应,又能覆盖所有前端路由场景。
注意:
*通配符路由必须放在所有路由定义的最后位置,要是写在接口或者其他路由前面,会优先匹配*导致后面的路由全部失效。
内容的提问来源于stack exchange,提问作者Rishabh Raghwendra
相关产品推荐
相关产品推荐

