From 7c84d9eb70f21e6be2849df9648b3b45af241bff Mon Sep 17 00:00:00 2001 From: xiaoxian521 <1923740402@qq.com> Date: Mon, 22 Aug 2022 10:19:10 +0800 Subject: [PATCH] perf: router --- mock/asyncRoutes.ts | 8 -------- src/router/utils.ts | 19 ++++++++++--------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/mock/asyncRoutes.ts b/mock/asyncRoutes.ts index 7edd55230..050c130a2 100644 --- a/mock/asyncRoutes.ts +++ b/mock/asyncRoutes.ts @@ -4,8 +4,6 @@ import { MockMethod } from "vite-plugin-mock"; // http://mockjs.com/examples.html#Object const systemRouter = { path: "/system", - name: "User", - redirect: "/system/user/index", meta: { icon: "setting", title: "menus.hssysManagement", @@ -51,8 +49,6 @@ const systemRouter = { const permissionRouter = { path: "/permission", - redirect: "/permission/page/index", - name: "PermissionPage", meta: { title: "menus.permission", icon: "lollipop", @@ -79,8 +75,6 @@ const permissionRouter = { const frameRouter = { path: "/iframe", - name: "FramePure", - redirect: "/iframe/pure", meta: { icon: "monitor", title: "menus.hsExternalPage", @@ -115,8 +109,6 @@ const frameRouter = { const tabsRouter = { path: "/tabs", - redirect: "/tabs/index", - name: "Tabs", meta: { icon: "IF-team-icontabs", title: "menus.hstabs", diff --git a/src/router/utils.ts b/src/router/utils.ts index 1d35c3861..8706cb2f5 100644 --- a/src/router/utils.ts +++ b/src/router/utils.ts @@ -228,15 +228,16 @@ function addAsyncRoutes(arrRoutes: Array) { arrRoutes.forEach((v: RouteRecordRaw) => { // 将backstage属性加入meta,标识此路由为后端返回路由 v.meta.backstage = true; - if (v.meta?.frameSrc) { - v.component = IFrame; - } else { - // 对后端传component组件路径和不传做兼容(如果后端传component组件路径,那么path可以随便写,如果不传,component组件路径会跟path保持一致) - const index = v?.component - ? modulesRoutesKeys.findIndex(ev => ev.includes(v.component as any)) - : modulesRoutesKeys.findIndex(ev => ev.includes(v.path)); - v.component = modulesRoutes[modulesRoutesKeys[index]]; - } + // 父级的redirect属性取值:如果子级存在且父级的redirect属性不存在,默认取第一个子级的path;如果子级存在且父级的redirect属性存在,取存在的redirect属性,会覆盖默认值 + if (v?.children && !v.redirect) v.redirect = v.children[0].path; + // 父级的name属性取值:如果子级存在且父级的name属性不存在,默认取第一个子级的name;如果子级存在且父级的name属性存在,取存在的name属性,会覆盖默认值 + if (v?.children && !v.name) v.name = v.children[0].name; + if (v.meta?.frameSrc) v.component = IFrame; + // 对后端传component组件路径和不传做兼容(如果后端传component组件路径,那么path可以随便写,如果不传,component组件路径会跟path保持一致) + const index = v?.component + ? modulesRoutesKeys.findIndex(ev => ev.includes(v.component as any)) + : modulesRoutesKeys.findIndex(ev => ev.includes(v.path)); + v.component = modulesRoutes[modulesRoutesKeys[index]]; if (v.children) { addAsyncRoutes(v.children); }