Browse Source

perf: the routeModule can ignore the layou configuration without writing

vben 4 years ago
parent
commit
4c658f4868

+ 1 - 0
CHANGELOG.zh_CN.md

@@ -5,6 +5,7 @@
 - Layout 界面布局样式调整
 - 优化表格渲染性能
 - 表单折叠搜索添图标添加动画
+- routeModule 可以忽略 layou 配置不写。方便配置一级菜单
 
 ### 🐛 Bug Fixes
 

+ 7 - 2
src/router/menus/index.ts

@@ -87,8 +87,13 @@ export async function getFlatChildrenMenus(children: Menu[]) {
 function basicFilter(routes: RouteRecordNormalized[]) {
   return (menu: Menu) => {
     const matchRoute = routes.find((route) => {
-      if (route.meta && route.meta.carryParam) {
-        return pathToRegexp(route.path).test(menu.path);
+      if (route.meta) {
+        if (route.meta.carryParam) {
+          return pathToRegexp(route.path).test(menu.path);
+        }
+        if (route.meta.ignoreAuth) {
+          return false;
+        }
       }
       return route.path === menu.path;
     });

+ 1 - 1
src/router/types.d.ts

@@ -67,6 +67,6 @@ export interface MenuModule {
 }
 
 export interface AppRouteModule {
-  layout: AppRouteRecordRaw;
+  layout?: AppRouteRecordRaw;
   routes: AppRouteRecordRaw[];
 }

+ 6 - 2
src/utils/helper/menuHelper.ts

@@ -49,8 +49,12 @@ export function transformRouteToMenu(routeModList: AppRouteModule[]) {
   const routeList: AppRouteRecordRaw[] = [];
   cloneRouteModList.forEach((item) => {
     const { layout, routes } = item;
-    layout.children = routes;
-    routeList.push(layout);
+    if (layout) {
+      layout.children = routes;
+      routeList.push(layout);
+    } else {
+      routeList.push(...routes);
+    }
   });
   return treeMap(routeList, {
     conversion: (node: AppRouteRecordRaw) => {

+ 11 - 5
src/utils/helper/routeHelper.ts

@@ -23,18 +23,24 @@ export function genRouteModule(moduleList: AppRouteModule[]) {
   for (const routeMod of moduleList) {
     const routes = routeMod.routes as any;
     const layout = routeMod.layout;
-    let router = createRouter({ routes, history: createWebHashHistory() });
+    const router = createRouter({ routes, history: createWebHashHistory() });
 
-    const flatList = toRaw(router.getRoutes()).filter((item) => item.children.length === 0);
+    const flatList = (toRaw(router.getRoutes()).filter(
+      (item) => item.children.length === 0
+    ) as unknown) as AppRouteRecordRaw[];
     try {
       (router as any) = null;
     } catch (error) {}
 
     flatList.forEach((item) => {
-      item.path = `${layout.path}${item.path}`;
+      item.path = `${layout ? layout.path : ''}${item.path}`;
     });
-    layout.children = (flatList as unknown) as AppRouteRecordRaw[];
-    ret.push(layout);
+    if (layout) {
+      layout.children = flatList;
+      ret.push(layout);
+    } else {
+      ret.push(...flatList);
+    }
   }
   return ret as RouteRecordRaw[];
 }