路由路径中有两个同名路径,一个为动态一个为静态时会出现截胡问题,下面用图片来形象描述一下这个问题
静态路由放动态路由前
vue-router下index.js定义的路由规则
上面代码最终会展现出以下形式
这种方式将静态路由写在动态路由前页面可以正常显示,当将静态路由和动态路由调换位置,如下图
最终代码表现形式
这时发现不管是动态路由还是静态路由都是一个页面,因为动态路由这种写法 :id 随机匹配可以写成任意值,而静态路由写的是写死的路径,规则匹配验证时因为 :id 可以为任意值,所以从声明规则的先后顺序进行规则的匹配理所当然动态路由就将后面的同名路由下的静态路由截胡了,那怎么避免呢,把静态的同名路由放到动态路由不失是一种结局办法,但是不够严谨,所以荡了一遍vue的官网后找到了解决方案,在vue匹配路径中可以使用正则表达式。vue在参数中自定义正则
总结一下:解决同名静态路由被动态路由所截胡问题
- 方法一:将同名静态路由放在同名静态路由之前,路由规则匹配时会按照路由规则定义的先后顺序进行验证(不推荐)
- 方法二:在动态路由内加上正则验证,用正则表达式来规定动态路由的类型
望能解决你我共同遇到的问题,加油CV攻城狮