Blame view

泰额版/Food Labeling Management Code/Yi.Vben5.Vue3/playground/src/router/routes/index.ts 1.79 KB
383e20a3   杨鑫   拉取
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
  import type { RouteRecordRaw } from 'vue-router';
  
  import { mergeRouteModules, traverseTreeValues } from '@vben/utils';
  
  import { coreRoutes, fallbackNotFoundRoute } from './core';
  
  const dynamicRouteFiles = import.meta.glob('./modules/**/*.ts', {
    eager: true,
  });
  
  // 有需要可以自行打开注释,并创建文件夹
  // const externalRouteFiles = import.meta.glob('./external/**/*.ts', { eager: true });
  // const staticRouteFiles = import.meta.glob('./static/**/*.ts', { eager: true });
  
  /** 动态路由 */
  const dynamicRoutes: RouteRecordRaw[] = mergeRouteModules(dynamicRouteFiles);
  
  /** 外部路由列表,访问这些页面可以不需要Layout,可能用于内嵌在别的系统(不会显示在菜单中) */
  // const externalRoutes: RouteRecordRaw[] = mergeRouteModules(externalRouteFiles);
  // const staticRoutes: RouteRecordRaw[] = mergeRouteModules(staticRouteFiles);
  const staticRoutes: RouteRecordRaw[] = [];
  const externalRoutes: RouteRecordRaw[] = [];
  
  /** 路由列表,由基本路由、外部路由和404兜底路由组成
   *  无需走权限验证(会一直显示在菜单中) */
  const routes: RouteRecordRaw[] = [
    ...coreRoutes,
    ...externalRoutes,
    fallbackNotFoundRoute,
  ];
  
  /** 基本路由列表,这些路由不需要进入权限拦截 */
  const coreRouteNames = traverseTreeValues(coreRoutes, (route) => route.name);
  
  /** 有权限校验的路由列表,包含动态路由和静态路由 */
  const accessRoutes = [...dynamicRoutes, ...staticRoutes];
  
  const componentKeys: string[] = Object.keys(
    import.meta.glob('../../views/**/*.vue'),
  )
    .filter((item) => !item.includes('/modules/'))
    .map((v) => {
      const path = v.replace('../../views/', '/');
      return path.endsWith('.vue') ? path.slice(0, -4) : path;
    });
  
  export { accessRoutes, componentKeys, coreRouteNames, routes };