generateRoute.js 1.14 KB
/*
 * @Date: 2022-05-16 17:21:45
 * @LastEditors: hookehuyr hookehuyr@gmail.com
 * @LastEditTime: 2022-06-29 06:19:41
 * @FilePath: /tswj/src/utils/generateRoute.js
 * @Description: 文件描述
 */
/**
 * 生成动态路由
 */
import asyncRoutes from "../mock/routes"

// 根据后台返回的路径,生成页面的组件模版
function loadView(component) {
  return () => import(`../views/${component}.vue`)
}

const formatRoutesArr = []

asyncRoutes.forEach(route => {
  const router = {}
  const {
    path,
    redirect,
    name,
    component,
    keepAlive,
    meta,
    children
  } = route

  router.path = path
  redirect && (router.redirect = redirect)
  name && (router.name = name)
  router.component = loadView(component)
  keepAlive && (router.keepAlive = keepAlive)
  meta && (router.meta = meta)
  if (children && children instanceof Array && children.length > 0) {
    router.children = formatRoutes(children)
  }

  formatRoutesArr.push(router)
})

export const generateRoute = (to) => {
  let router = ''
  formatRoutesArr.forEach(item => {
    if (item.path === to.path) {
      router = item
    }
  })
  return { ...to, ...router }
}