命名路由是通过name属性为路由分配唯一语义化名称,实现跳转与路径解耦;支持改路径不改调用、IDE智能提示、嵌套路由清晰等优势,需规范使用camelCase、业务意图命名、模块化命名空间,并在模板和JS中以对象形式传入name及params/query参数。

命名路由就是给每条路由规则配一个唯一、语义化的名字,靠 name 属性实现,而不是只依赖 path 字符串跳转。它不是语法糖,而是解耦路由逻辑与路径结构的关键设计。
为什么用 name 跳转比写 path 更可靠
直接写 /user/123/orders/detail 这类路径,项目一变就容易出问题。用 name 后,跳转和路径彻底分开,好处很实在:
-
改路径不改调用:比如把
/profile改成/me,只需在路由配置里改一处path,所有{ name: 'userProfile' }的跳转自动生效 -
IDE 能提示、能跳转:输入
{ name:,编辑器就能列出所有已定义的路由名,拼错或漏写立刻报错,不像字符串路径完全靠人眼核对 -
嵌套路由更清晰:三级页面如
product.detail.specs比/p/123/d/s直观得多,团队协作时不用翻配置也能猜出用途
命名路由的正确配置方式
name 不是随便起个代号,它承担着可读性与可维护性的责任。规范配置要注意这几条:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 统一用 camelCase,比如
orderList、adminDashboard,避免中划线或下划线 - 名称要体现业务意图,不体现技术细节——用
paymentSuccess,别用page4或successView - 同类型路由保持前缀一致,如
userList/userDetail/userEdit,方便搜索和归类 - 大型项目建议按模块加命名空间,比如
cartAddItem、checkoutSubmit,避免全局重名
模板与编程式导航中的实际用法
无论是写在模板里还是 JS 中,用 name 都需要传对象,不能直接赋值字符串:
- 模板中:
<router-link :to="{ name: 'userProfile', params: { id: 123 } }">查看资料</router-link> - JS 中:
this.$router.push({ name: 'orderDetail', query: { tab: 'log' } })(Vue 2)或router.push({ name: 'orderDetail', params: { id: 'ORD-789' } })(Vue 3) - 带参数时注意区分:
params对应路径参数(需在path中声明),query是 URL 查询参数,两者不可混用
哪些情况特别适合启用命名路由
并不是所有路由都必须命名,但以下场景强烈建议加上 name:
- 路径含多个动态段,比如
/org/:orgId/team/:teamId/member/:id - 存在多层嵌套路由,子路由频繁被独立跳转或复用
- 项目有权限控制或埋点需求,需通过路由名快速识别当前页面类型(如
meta.requiresAuth或统计上报) - 团队超过三人,或准备长期迭代,减少因路径变更引发的回归成本


















