若依菜单name重名404

若依框架会使用菜单路由地址作为路由name,所以在路由地址重名时,就会出现404页面。vue-router需要name唯一.

[{
  name: 'Aaa',
  path: '/aaa',
  children: [
    { name: 'Index', path: '/index' }
  ]},
  {
  name: 'Bbb',
  path: '/bbb',
  children: [
    { name: 'Index', path: '/index' }//404,因为name必须唯一
  ]}
]

在前端页面比较多时,尤其涉及多人合作的时候,很容易出现这种命名重复的问题,所以可以拼接父级name作为路由name.

若依框架 \src\store\modules\permission.js
......           
// 向后端请求路由数据
getRouters().then((res) => {
   //处理路由name
   processName("", res.data);
   ......
});
/**
 * 处理路由Name--父节点path+本节点path
 * @param {*} name
 * @param {*} data
 */
function processName(name, data) {
    data.forEach((o) => {
        let str = name + o.name;
        o.name = str[0].toUpperCase() + str.slice(1).toLowerCase();
        if (o.children && o.children.length > 0) {
            processName(o.name, o.children);
        }
    });
}

这样可以有效避免出现重名导致的404问题。但是修改以后会导致出现另外一个问题,就是原来能正常缓存的页面现在无法缓存了,这是因为vue文件的name和路由名称不一致,比如原先若依框架系统菜单name是menu,但是经过处理以后,路由name变成了Systemmenu,所以还需要对vue文件的name进行调整,修改成和路由名称一致,这样就能正常缓存页面了.

可以按照若依菜单的路由path对前端目录进行规划,这样会更加规范.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值