一、获取完整路由记录

1.通过router的getRoutes获取完整路由记录。该数组包含了所有层级的路由,子路由也放在了最外层,需要把最外层的路由过滤掉

  1. /**
  2. * 获取子路由配置
  3. * @param {*} routes
  4. * @returns
  5. */
  6. function getChildrenRoutes(routes) {
  7. const result = []
  8. routes.forEach((item) => {
  9. if (item.children && item.children.length) {
  10. result.push(...item.children)
  11. }
  12. })
  13. return result
  14. }
  15. /**
  16. * 通过查重,处理脱离层级的路由
  17. */
  18. export function filterRoutes(routes) {
  19. const childrenRoutes = getChildrenRoutes(routes)
  20. routes = routes.filter((item) => {
  21. return !childrenRoutes.find((singleRoute) => {
  22. return singleRoute.path === item.path
  23. })
  24. })
  25. return routes
  26. }