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

Remix v2路由系统求助:按业务场景拆分路由实现遇阻

Remix v2路由按业务场景拆分问题求助

我是Remix新手,使用v2路由系统时遇到了麻烦:默认把所有路由放在基础文件夹的方式,在路由数量多了之后变得非常混乱。我想按业务场景用文件夹来拆分路由,参照官方的「folders-for-organization」方案尝试实现但没成功,目前只能通过@remix-run/v1-route-convention包配置Remix,沿用v1的路由方式作为临时方案,希望能得到解决办法。我基于Remix教程模板做了示例项目。


正确实现v2按业务场景拆分路由的方法

  • 核心规则:v2的路由文件夹仅用于代码组织,不会直接生成路由路径,路由路径由route.tsx(或_route.tsx)文件的位置、文件名中的$(动态参数)和_(忽略路径段)前缀决定。
  • 按业务模块创建独立文件夹,比如app/routes/user/、app/routes/order/
  • 在业务文件夹内创建对应路由文件:
    • 示例:app/routes/user/profile/route.tsx 对应访问路径 /user/profile
    • 示例:app/routes/order/$orderId/route.tsx 对应动态路径 /order/123
  • 嵌套路由必须确保父路由包含<Outlet />组件,比如app/routes/user/route.tsx中要引入并渲染<Outlet />,否则子路由的内容无法显示。

常见失败原因排查

  • 误以为文件夹名会自动生成路由路径:v2中文件夹只是分组用,必须存在route.tsx文件才会生成对应的路由
  • 嵌套路由缺少父路由的<Outlet />:子路由内容无法渲染,导致看起来配置无效
  • 混用v1路由命名规则:比如用index.tsx代替route.tsx作为主路由,v2中index.tsx仅作为父路由的默认子路由,需要配合父级route.tsx使用

移除v1路由包的迁移步骤

如果要彻底切换到v2路由规范,替换临时方案的步骤:

  1. 删除remix.config.js中关于@remix-run/v1-route-convention的配置代码
  2. 将所有v1风格的路由文件(比如app/routes/user-profile.tsx)迁移到对应业务文件夹,并重命名为route.tsx
  3. 检查所有嵌套路由的父组件,确保添加了<Outlet />
  4. 启动项目,逐一测试各路由是否正常访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:42:49