跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 综合服务 > 电商平台 > 若依(ruoyi)框架:如何实现灵活自定义路由配置

若依(ruoyi)框架:如何实现灵活自定义路由配置

时间:2024-04-01 07:55:53 来源:网络cs 作者:峨乐 栏目:电商平台 阅读:

标签: 灵活  定义  配置  实现 

如何灵活自定义路由配置

业务背景如何实现方式一:直接在前端路由表(router/index.js)里面某个路由的meta属性里面配置。方式二:在后台返回动态路由的接口中组装meta信息如何改造效果展示使用方法 总结

业务背景

随着项目的深入开发,我们可能会对路由做特殊化处理。比如:访问路由A时需要传入routerType=A,前端会根据routerType=A做一些特殊的处理。

如何实现

方式一:直接在前端路由表(router/index.js)里面某个路由的meta属性里面配置。

在这里插入图片描述

这种方法可用于公共路由或固定路由中,而现实开发过程中我们经常遇到的对某个菜单路由的做特殊化处理。还有经常遇到对动态路由的特殊化处理。所以就需要第二种方式。

方式二:在后台返回动态路由的接口中组装meta信息

在若依框架中,获取路由信息接口 /getRouters 中是对存在sys_menu表里的菜单数据进行拼装。

如何改造

步骤:

在sys_menu表中增加一个属性 meta。将 RouterVo 类中的 private MetaVo meta 改为 private Map<String,Object> metaSysMenuServiceImpl类里增加 assembleMeta方法。
/**   * 装配路由的Meta信息   *   * @param menu  菜单   * @return Map类型   */  public Map<String,Object> assembleMeta(SysMenu menu) {      Map<String,Object> meta = new HashMap<>();      if (StringUtils.isNotEmpty(menu.getMenuName())) {          meta.put("title",menu.getMenuName());      }      if (StringUtils.isNotEmpty(menu.getIcon())) {          meta.put("icon",menu.getIcon());      }      if (StringUtils.isNotEmpty(menu.getIsCache())) {          meta.put("noCache",StringUtils.equals("1", menu.getIsCache()));      }        if (StringUtils.isNotEmpty(menu.getPath())) {          meta.put("link",menu.getPath());      }      //往路由里面添加扩展元数据      if (StringUtils.isNotEmpty(menu.getMeta())) {          try {              Map<String,Object> metaInfo = (Map<String,Object>)JSONObject.parse(menu.getMeta());              meta.putAll (metaInfo);          } catch (Exception e) {              log.error("元数据JSON数据转换异常{}", e.getMessage());          }      }      return meta;  }
SysMenuServiceImpl类里的buildMenus方法中setMeta(new MetaVo(menu...))改为setMeta(assembleMeta(menu))

效果展示

在这里插入图片描述

使用方法

router.beforeEach((to, from) => {  // 而不是去检查每条路由记录  if (to.meta.routerType === 'A') {    console.log("做一些特殊的处理.....")    return {      path: '/login',      // 保存我们所在的位置,以便以后再来      query: { redirect: to.fullPath },    }  }})

总结

以上只是在实际开发过程中,根据实际需要做个一下改造,个性化比较强。你也可以在你的项目中做适合自己项目的改造。

本文链接:https://www.kjpai.cn/news/2024-04-01/151816.html,文章来源:网络cs,作者:峨乐,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论