feat: 创建声明式路由配置系统'
This commit is contained in:
190
src/routes/routeConfig.js
Normal file
190
src/routes/routeConfig.js
Normal file
@@ -0,0 +1,190 @@
|
||||
// src/routes/routeConfig.js
|
||||
// 声明式路由配置
|
||||
|
||||
import { lazyComponents } from './lazy-components';
|
||||
|
||||
/**
|
||||
* 路由保护模式
|
||||
* - 'modal': 使用 ProtectedRoute (弹窗模式登录)
|
||||
* - 'redirect': 使用 ProtectedRouteRedirect (跳转模式登录)
|
||||
* - 'public': 公开访问,无需登录
|
||||
*/
|
||||
export const PROTECTION_MODES = {
|
||||
MODAL: 'modal',
|
||||
REDIRECT: 'redirect',
|
||||
PUBLIC: 'public',
|
||||
};
|
||||
|
||||
/**
|
||||
* 路由配置
|
||||
* 每个路由对象包含:
|
||||
* - path: 路由路径
|
||||
* - component: 组件(从 lazyComponents 引用)
|
||||
* - protection: 保护模式 (modal/redirect/public)
|
||||
* - layout: 布局类型 (main/auth/none)
|
||||
* - meta: 路由元数据(可选,用于面包屑、标题等)
|
||||
*/
|
||||
export const routeConfig = [
|
||||
// ==================== 首页 ====================
|
||||
{
|
||||
path: 'home/*',
|
||||
component: 'HomeLayout', // 非懒加载,直接在 App.js 导入
|
||||
protection: PROTECTION_MODES.PUBLIC,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '首页',
|
||||
description: '价值前沿首页'
|
||||
}
|
||||
},
|
||||
|
||||
// ==================== 社区/内容模块 ====================
|
||||
{
|
||||
path: 'community',
|
||||
component: lazyComponents.Community,
|
||||
protection: PROTECTION_MODES.MODAL,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '社区',
|
||||
description: '投资社区交流'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'concepts',
|
||||
component: lazyComponents.ConceptCenter,
|
||||
protection: PROTECTION_MODES.MODAL,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '概念中心',
|
||||
description: '热门概念追踪'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'stocks',
|
||||
component: lazyComponents.StockOverview,
|
||||
protection: PROTECTION_MODES.MODAL,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '股票概览',
|
||||
description: '全市场股票概览'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'limit-analyse',
|
||||
component: lazyComponents.LimitAnalyse,
|
||||
protection: PROTECTION_MODES.MODAL,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '涨停分析',
|
||||
description: '涨停板数据分析'
|
||||
}
|
||||
},
|
||||
|
||||
// ==================== 交易模块 ====================
|
||||
{
|
||||
path: 'trading-simulation',
|
||||
component: lazyComponents.TradingSimulation,
|
||||
protection: PROTECTION_MODES.MODAL,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '模拟交易',
|
||||
description: '模拟盘交易系统'
|
||||
}
|
||||
},
|
||||
|
||||
// ==================== 事件模块 ====================
|
||||
{
|
||||
path: 'event-detail/:eventId',
|
||||
component: lazyComponents.EventDetail,
|
||||
protection: PROTECTION_MODES.REDIRECT,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '事件详情',
|
||||
description: '事件详细信息'
|
||||
}
|
||||
},
|
||||
|
||||
// ==================== 公司相关模块 ====================
|
||||
{
|
||||
path: 'forecast-report',
|
||||
component: lazyComponents.ForecastReport,
|
||||
protection: PROTECTION_MODES.REDIRECT,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '财报预测',
|
||||
description: '上市公司财报预测'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'Financial',
|
||||
component: lazyComponents.FinancialPanorama,
|
||||
protection: PROTECTION_MODES.MODAL,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '财务全景',
|
||||
description: '公司财务全景分析'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'company',
|
||||
component: lazyComponents.CompanyIndex,
|
||||
protection: PROTECTION_MODES.MODAL,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '公司',
|
||||
description: '上市公司信息'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'company/:code',
|
||||
component: lazyComponents.CompanyIndex,
|
||||
protection: PROTECTION_MODES.REDIRECT,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '公司详情',
|
||||
description: '公司详细信息'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'market-data',
|
||||
component: lazyComponents.MarketDataView,
|
||||
protection: PROTECTION_MODES.MODAL,
|
||||
layout: 'main',
|
||||
meta: {
|
||||
title: '市场数据',
|
||||
description: '实时市场数据'
|
||||
}
|
||||
},
|
||||
|
||||
// ==================== 认证模块 ====================
|
||||
{
|
||||
path: 'auth/*',
|
||||
component: 'Auth', // 非懒加载,直接在 App.js 导入
|
||||
protection: PROTECTION_MODES.PUBLIC,
|
||||
layout: 'none',
|
||||
meta: {
|
||||
title: '登录/注册',
|
||||
description: '用户认证'
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
* 获取所有需要 MainLayout 的路由
|
||||
*/
|
||||
export function getMainLayoutRoutes() {
|
||||
return routeConfig.filter(route => route.layout === 'main');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取不需要布局的路由
|
||||
*/
|
||||
export function getStandaloneRoutes() {
|
||||
return routeConfig.filter(route => route.layout === 'none');
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据路径查找路由配置
|
||||
*/
|
||||
export function findRouteByPath(path) {
|
||||
return routeConfig.find(route => route.path === path);
|
||||
}
|
||||
Reference in New Issue
Block a user