Skip to content

Commit 55eaa8a

Browse files
committed
add dynamic imports
1 parent ebe5425 commit 55eaa8a

File tree

1 file changed

+34
-8
lines changed

1 file changed

+34
-8
lines changed

apps/dashboard/src/App.tsx

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,44 @@
1+
import { lazy, Suspense } from 'react';
12
import { Route, Routes } from 'react-router-dom';
23
import Layout from './components/Layout';
3-
import DashboardPage from './pages/DashboardPage';
4-
import MinificationBenchmarksPage from './pages/MinificationBenchmarksPage';
5-
import NpmDownloadsPage from './pages/NpmDownloadsPage';
6-
import RolldownStatsPage from './pages/RolldownStatsPage';
4+
5+
// Lazy load all page components for code-splitting
6+
const DashboardPage = lazy(() => import('./pages/DashboardPage'));
7+
const MinificationBenchmarksPage = lazy(() => import('./pages/MinificationBenchmarksPage'));
8+
const NpmDownloadsPage = lazy(() => import('./pages/NpmDownloadsPage'));
9+
const RolldownStatsPage = lazy(() => import('./pages/RolldownStatsPage'));
10+
11+
// Loading component for Suspense fallback
12+
const PageLoader = () => (
13+
<div className="flex items-center justify-center min-h-[400px]">
14+
<div className="text-gray-500 dark:text-gray-400">Loading...</div>
15+
</div>
16+
);
717

818
function App() {
919
return (
1020
<Routes>
1121
<Route path='/' element={<Layout />}>
12-
<Route index element={<DashboardPage />} />
13-
<Route path='rolldown-stats' element={<RolldownStatsPage />} />
14-
<Route path='minification' element={<MinificationBenchmarksPage />} />
15-
<Route path='npm-downloads' element={<NpmDownloadsPage />} />
22+
<Route index element={
23+
<Suspense fallback={<PageLoader />}>
24+
<DashboardPage />
25+
</Suspense>
26+
} />
27+
<Route path='rolldown-stats' element={
28+
<Suspense fallback={<PageLoader />}>
29+
<RolldownStatsPage />
30+
</Suspense>
31+
} />
32+
<Route path='minification' element={
33+
<Suspense fallback={<PageLoader />}>
34+
<MinificationBenchmarksPage />
35+
</Suspense>
36+
} />
37+
<Route path='npm-downloads' element={
38+
<Suspense fallback={<PageLoader />}>
39+
<NpmDownloadsPage />
40+
</Suspense>
41+
} />
1642
</Route>
1743
</Routes>
1844
);

0 commit comments

Comments
 (0)