refactor(routing): 重构路由模块以提高可维护性

- 将路由配置从单一文件拆分为多个模块化文件
- 新增 routes/modules 目录,每个路由对应一个模块文件
- 在 routes.ts 中使用模块映射替代直接定义路由数组
- 添加路由类型定义文件 routes/types.ts
master
钟良源 6 months ago
parent c0ac04289d
commit aa5b4d983b

@ -0,0 +1,11 @@
import React from 'react';
function IDEContainer() {
return (
<>
<div>IDE Container</div>
</>
);
}
export default IDEContainer;

@ -1,51 +1,12 @@
import auth, { AuthParams } from '@/utils/authentication'; import auth, { AuthParams } from '@/utils/authentication';
import { useEffect, useMemo, useState } from 'react'; import { useEffect, useMemo, useState } from 'react';
import Instance from '@/pages/instance'; import { moduleMap } from '@/routes/modules';
import { IRoute } from '@/routes/types';
export type IRoute = AuthParams & { export type { IRoute } from '@/routes/types';
name: string;
key: string;
// 当前页是否展示面包屑
breadcrumb?: boolean;
children?: IRoute[];
// 当前路由是否渲染菜单项,为 true 的话不会在菜单中显示,但可通过路由地址访问。
ignore?: boolean;
};
export const routes: IRoute[] = [ // 根据模块生成路由
{ export const routes: IRoute[] = Object.values(moduleMap);
name: 'menu.dashboard.workplace',
key: 'dashboard/workplace'
},
{
name: 'menu.scene',
key: 'scene'
},
{
name: 'menu.application',
key: 'application'
},
{
name: 'menu.instance',
key: 'instance'
},
{
name: 'menu.componentDevelopment',
key: 'componentDevelopment'
},
{
name: 'menu.componentLibrary',
key: 'componentLibrary'
},
{
name: 'menu.compositeCompLibrary',
key: 'compositeCompLibrary'
},
{
name: 'menu.componentMarket',
key: 'componentMarket'
}
];
export const getName = (path: string, routes) => { export const getName = (path: string, routes) => {
return routes.find((item) => { return routes.find((item) => {
@ -119,4 +80,4 @@ const useRoute = (userPermission): [IRoute[], string] => {
return [permissionRoute, defaultRoute]; return [permissionRoute, defaultRoute];
}; };
export default useRoute; export default useRoute;

@ -0,0 +1,6 @@
import { IRoute } from '@/routes/types';
export const applicationModule: IRoute = {
name: 'menu.application',
key: 'application'
};

@ -0,0 +1,6 @@
import { IRoute } from '@/routes/types';
export const componentDevelopmentModule: IRoute = {
name: 'menu.componentDevelopment',
key: 'componentDevelopment'
};

@ -0,0 +1,6 @@
import { IRoute } from '@/routes/types';
export const componentLibraryModule: IRoute = {
name: 'menu.componentLibrary',
key: 'componentLibrary'
};

@ -0,0 +1,6 @@
import { IRoute } from '@/routes/types';
export const componentMarketModule: IRoute = {
name: 'menu.componentMarket',
key: 'componentMarket'
};

@ -0,0 +1,6 @@
import { IRoute } from '@/routes/types';
export const compositeCompLibraryModule: IRoute = {
name: 'menu.compositeCompLibrary',
key: 'compositeCompLibrary'
};

@ -0,0 +1,12 @@
import { IRoute } from '@/routes/types';
export const dashboardModule: IRoute = {
name: 'menu.dashboard',
key: 'dashboard',
children: [
{
name: 'menu.dashboard.workplace',
key: 'dashboard/workplace'
}
]
};

@ -0,0 +1,30 @@
import { dashboardModule } from './dashboard';
import { sceneModule } from './scene';
import { applicationModule } from './application';
import { instanceModule } from './instance';
import { componentDevelopmentModule } from './componentDevelopment';
import { componentLibraryModule } from './componentLibrary';
import { compositeCompLibraryModule } from './compositeCompLibrary';
import { componentMarketModule } from './componentMarket';
export {
dashboardModule,
sceneModule,
applicationModule,
instanceModule,
componentDevelopmentModule,
componentLibraryModule,
compositeCompLibraryModule,
componentMarketModule
};
export const moduleMap = {
dashboard: dashboardModule,
scene: sceneModule,
application: applicationModule,
instance: instanceModule,
componentDevelopment: componentDevelopmentModule,
componentLibrary: componentLibraryModule,
compositeCompLibrary: compositeCompLibraryModule,
componentMarket: componentMarketModule
};

@ -0,0 +1,6 @@
import { IRoute } from '@/routes/types';
export const instanceModule: IRoute = {
name: 'menu.instance',
key: 'instance'
};

@ -0,0 +1,6 @@
import { IRoute } from '@/routes/types';
export const sceneModule: IRoute = {
name: 'menu.scene',
key: 'scene'
};

@ -0,0 +1,11 @@
import { AuthParams } from '@/utils/authentication';
export type IRoute = AuthParams & {
name: string;
key: string;
// 当前页是否展示面包屑
breadcrumb?: boolean;
children?: IRoute[];
// 当前路由是否渲染菜单项,为 true 的话不会在菜单中显示,但可通过路由地址访问。
ignore?: boolean;
};
Loading…
Cancel
Save