동적 임포트는 React 애플리케이션에서 코드 스플리팅을 구현하는 효과적인 방법입니다. React.lazy()와 Suspense를 사용하여 컴포넌트를 동적으로 로드할 수 있습니다. 여기 그 방법을 설명하겠습니다:
javascript
Copy
import React, { lazy, Suspense } from 'react';
const GameCanvas = lazy(() => import('./components/game/GameCanvas'));
const Lobby = lazy(() => import('./components/Lobby'));
javascript
Copy
function App() {
return (
<div>
<Suspense fallback={<div>Loading...</div>}>
{isInGame ? <GameCanvas /> : <Lobby />}
</Suspense>
</div>
);
}
javascript
Copy
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const GameMain = lazy(() => import('./components/game/GameMain'));
const Lobby = lazy(() => import('./components/Lobby'));
function App() {
return (
<Router>
<Suspense fallback={<div>Loading...</div>}>
<Switch>
<Route exact path="/" component={Lobby} />
<Route path="/game" component={GameMain} />
</Switch>
</Suspense>
</Router>
);
}
javascript
Copy
const GameMain = lazy(() => import(/* webpackChunkName: "game" */ './components/game/GameMain'));
javascript
Copy
import ErrorBoundary from './ErrorBoundary';
function App() {
return (
<ErrorBoundary>
<Suspense fallback={<div>Loading...</div>}>
{/* 컴포넌트들 */}
</Suspense>
</ErrorBoundary>
);
}
이런 방식으로 동적 임포트를 구현하면 초기 로딩 시간을 줄이고, 필요한 시점에 필요한 코드만 로드할 수 있습니다. 특히 GameCanvas와 같은 큰 컴포넌트의 경우 이 방법이 효과적일 수 있습니다. 사용자가 실제로 게임을 시작할 때만 관련 코드를 로드함으로써 초기 페이지 로드 시간을 크게 줄일 수 있습니다.