From aa5b4d983bbd91cf72bc7bd690be60e7a8cb4340 Mon Sep 17 00:00:00 2001 From: ZLY Date: Tue, 19 Aug 2025 11:31:27 +0800 Subject: [PATCH] =?UTF-8?q?refactor(routing):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E6=A8=A1=E5=9D=97=E4=BB=A5=E6=8F=90=E9=AB=98?= =?UTF-8?q?=E5=8F=AF=E7=BB=B4=E6=8A=A4=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将路由配置从单一文件拆分为多个模块化文件 - 新增 routes/modules 目录,每个路由对应一个模块文件 - 在 routes.ts 中使用模块映射替代直接定义路由数组 - 添加路由类型定义文件 routes/types.ts --- src/pages/IDEContainer/index.tsx | 11 +++++ src/routes.ts | 51 +++------------------- src/routes/modules/application.ts | 6 +++ src/routes/modules/componentDevelopment.ts | 6 +++ src/routes/modules/componentLibrary.ts | 6 +++ src/routes/modules/componentMarket.ts | 6 +++ src/routes/modules/compositeCompLibrary.ts | 6 +++ src/routes/modules/dashboard.ts | 12 +++++ src/routes/modules/index.ts | 30 +++++++++++++ src/routes/modules/instance.ts | 6 +++ src/routes/modules/scene.ts | 6 +++ src/routes/types.ts | 11 +++++ 12 files changed, 112 insertions(+), 45 deletions(-) create mode 100644 src/pages/IDEContainer/index.tsx create mode 100644 src/routes/modules/application.ts create mode 100644 src/routes/modules/componentDevelopment.ts create mode 100644 src/routes/modules/componentLibrary.ts create mode 100644 src/routes/modules/componentMarket.ts create mode 100644 src/routes/modules/compositeCompLibrary.ts create mode 100644 src/routes/modules/dashboard.ts create mode 100644 src/routes/modules/index.ts create mode 100644 src/routes/modules/instance.ts create mode 100644 src/routes/modules/scene.ts create mode 100644 src/routes/types.ts diff --git a/src/pages/IDEContainer/index.tsx b/src/pages/IDEContainer/index.tsx new file mode 100644 index 0000000..de586d5 --- /dev/null +++ b/src/pages/IDEContainer/index.tsx @@ -0,0 +1,11 @@ +import React from 'react'; + +function IDEContainer() { + return ( + <> +
IDE Container
+ + ); +} + +export default IDEContainer; \ No newline at end of file diff --git a/src/routes.ts b/src/routes.ts index 5b9569c..532a06c 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -1,51 +1,12 @@ import auth, { AuthParams } from '@/utils/authentication'; 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 & { - name: string; - key: string; - // 当前页是否展示面包屑 - breadcrumb?: boolean; - children?: IRoute[]; - // 当前路由是否渲染菜单项,为 true 的话不会在菜单中显示,但可通过路由地址访问。 - ignore?: boolean; -}; +export type { IRoute } from '@/routes/types'; -export const routes: IRoute[] = [ - { - 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 routes: IRoute[] = Object.values(moduleMap); export const getName = (path: string, routes) => { return routes.find((item) => { @@ -119,4 +80,4 @@ const useRoute = (userPermission): [IRoute[], string] => { return [permissionRoute, defaultRoute]; }; -export default useRoute; +export default useRoute; \ No newline at end of file diff --git a/src/routes/modules/application.ts b/src/routes/modules/application.ts new file mode 100644 index 0000000..80003cc --- /dev/null +++ b/src/routes/modules/application.ts @@ -0,0 +1,6 @@ +import { IRoute } from '@/routes/types'; + +export const applicationModule: IRoute = { + name: 'menu.application', + key: 'application' +}; \ No newline at end of file diff --git a/src/routes/modules/componentDevelopment.ts b/src/routes/modules/componentDevelopment.ts new file mode 100644 index 0000000..97a772c --- /dev/null +++ b/src/routes/modules/componentDevelopment.ts @@ -0,0 +1,6 @@ +import { IRoute } from '@/routes/types'; + +export const componentDevelopmentModule: IRoute = { + name: 'menu.componentDevelopment', + key: 'componentDevelopment' +}; \ No newline at end of file diff --git a/src/routes/modules/componentLibrary.ts b/src/routes/modules/componentLibrary.ts new file mode 100644 index 0000000..1eabb36 --- /dev/null +++ b/src/routes/modules/componentLibrary.ts @@ -0,0 +1,6 @@ +import { IRoute } from '@/routes/types'; + +export const componentLibraryModule: IRoute = { + name: 'menu.componentLibrary', + key: 'componentLibrary' +}; \ No newline at end of file diff --git a/src/routes/modules/componentMarket.ts b/src/routes/modules/componentMarket.ts new file mode 100644 index 0000000..13954c8 --- /dev/null +++ b/src/routes/modules/componentMarket.ts @@ -0,0 +1,6 @@ +import { IRoute } from '@/routes/types'; + +export const componentMarketModule: IRoute = { + name: 'menu.componentMarket', + key: 'componentMarket' +}; \ No newline at end of file diff --git a/src/routes/modules/compositeCompLibrary.ts b/src/routes/modules/compositeCompLibrary.ts new file mode 100644 index 0000000..d6bcc01 --- /dev/null +++ b/src/routes/modules/compositeCompLibrary.ts @@ -0,0 +1,6 @@ +import { IRoute } from '@/routes/types'; + +export const compositeCompLibraryModule: IRoute = { + name: 'menu.compositeCompLibrary', + key: 'compositeCompLibrary' +}; \ No newline at end of file diff --git a/src/routes/modules/dashboard.ts b/src/routes/modules/dashboard.ts new file mode 100644 index 0000000..7cca8b9 --- /dev/null +++ b/src/routes/modules/dashboard.ts @@ -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' + } + ] +}; \ No newline at end of file diff --git a/src/routes/modules/index.ts b/src/routes/modules/index.ts new file mode 100644 index 0000000..889539d --- /dev/null +++ b/src/routes/modules/index.ts @@ -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 +}; \ No newline at end of file diff --git a/src/routes/modules/instance.ts b/src/routes/modules/instance.ts new file mode 100644 index 0000000..2c4fffa --- /dev/null +++ b/src/routes/modules/instance.ts @@ -0,0 +1,6 @@ +import { IRoute } from '@/routes/types'; + +export const instanceModule: IRoute = { + name: 'menu.instance', + key: 'instance' +}; \ No newline at end of file diff --git a/src/routes/modules/scene.ts b/src/routes/modules/scene.ts new file mode 100644 index 0000000..6241c50 --- /dev/null +++ b/src/routes/modules/scene.ts @@ -0,0 +1,6 @@ +import { IRoute } from '@/routes/types'; + +export const sceneModule: IRoute = { + name: 'menu.scene', + key: 'scene' +}; \ No newline at end of file diff --git a/src/routes/types.ts b/src/routes/types.ts new file mode 100644 index 0000000..421447b --- /dev/null +++ b/src/routes/types.ts @@ -0,0 +1,11 @@ +import { AuthParams } from '@/utils/authentication'; + +export type IRoute = AuthParams & { + name: string; + key: string; + // 当前页是否展示面包屑 + breadcrumb?: boolean; + children?: IRoute[]; + // 当前路由是否渲染菜单项,为 true 的话不会在菜单中显示,但可通过路由地址访问。 + ignore?: boolean; +}; \ No newline at end of file