import { createRouter, createWebHistory } from 'vue-router' import Main from '../pages/Main.vue' import LeaderboardView from '../views/LeaderboardView.vue' import LiveView from '../views/LiveView.vue' import AddAssetsView from '../views/AddAssetView.vue' import RequestView from '../views/RequestView.vue' import AssetRequestsView from '../views/AssetRequestsView.vue' import { dataService } from '../lib/dataService.js' const routes = [ { path: '/', name: 'main', component: Main, redirect: '/live', children: [ { path: '/leaderboard', name: 'leadboard', component: LeaderboardView }, { path: '/live', name: 'live', component: LiveView }, { path: '/add-asset', name: 'add-asset', component: RequestView }, { path: '/asset-requests', name: 'asset-requests', component: AssetRequestsView }, ] } ] const router = createRouter({ history: createWebHistory(), routes }) // 全局路由守卫:确保数据在导航前开始加载 router.beforeEach(async (to, from, next) => { // 如果数据还未加载且不在加载中,则触发加载 if (!dataService.loaded && !dataService.loading) { console.log('[Router] Triggering data load before navigation') // 不等待加载完成,让加载在后台进行 dataService.load().catch(e => { console.error('[Router] Error loading data:', e) }) } next() }) export default router