728x90
반응형
프로젝트를 진행하면서 점점 늘어나는 기능들을 더 효율적으로 관리하기 위해 App.js에 있는 라우터를 분리해주는 작업이 필요하다. 모듈화해서 나누면 각 기능들을 독립적으로 관리할 수 있고 가독성도 좋아져 체계적이다.
공동 처리나 확장시에도 적용하기가 쉬워진다.
| 프론트엔드 라우터 구조
src/
routes/
AuthRoutes.js
PostRoutes.js
DashboardRoutes.js
index.js ← App.js에 연결되는 최상위 통합 라우터
| 기능별 라우트 분할
frontend/routes/authRoutes.js
import React from 'react';
import { Route } from 'react-router-dom';
import LoginPage from '../pages/LoginPage';
import RegisterPage from '../pages/RegisterPage';
const AuthRoutes = (
<>
<Route path="/login" element={<LoginPage />} />
<Route path="/register" element={<RegisterPage />} />
</>
);
export default AuthRoutes;
frontend/routes/dashboardRoutes.js
import React from 'react';
import { Route } from 'react-router-dom';
import DashboardPage from '../pages/DashboardPage';
import ProtectedRoute from '../components/ProtectedRoute';
const DashboardRoutes = (
<Route
path="/dashboard"
element={
<ProtectedRoute>
<DashboardPage />
</ProtectedRoute>
}
/>
);
export default DashboardRoutes;
frontend/routes/postRoutes.js
import React from 'react';
import { Route } from 'react-router-dom';
import PostListPage from '../pages/PostListPage';
import PostDetailPage from '../pages/PostDetailPage';
import CreatePostPage from '../pages/CreatePostPage';
import ProtectedRoute from '../components/ProtectedRoute';
const PostRoutes = (
<>
<Route path="/posts" element={<PostListPage />} />
<Route path="/posts/:id" element={<PostDetailPage />} />
<Route
path="/posts/create"
element={
<ProtectedRoute>
<CreatePostPage />
</ProtectedRoute>
}
/>
</>
);
export default PostRoutes;
| 라우트 통합관리
각 기능들의 라우트를 분리해 별도의 파일로 관리하고 이를 통합적으로 관리해주는 index.js파일을 만든다. 앞으로 추가되는 기능들의 라우트를 여기 불러오기만 하면 된다.
frontend/src/routes/index.js
import React from 'react';
import { Routes } from 'react-router-dom';
import AuthRoutes from './authRoutes';
import PostRoutes from './postRoutes';
import DashboardRoutes from './dashboardRoutes';
const AppRoutes = () => {
return (
<Routes>
{AuthRoutes}
{DashboardRoutes}
{PostRoutes}
</Routes>
);
};
export default AppRoutes;
| 간편해진 라우터
App.js에서 더 이상 모든 라우트를 구성할 필요 없이 routes/index.js에 있는 통합 라우터만 불러오면 된다.
frontend/src/App.js
// src/App.js
import React from 'react';
import { BrowserRouter as Router } from 'react-router-dom';
import { AuthProvider } from './context/AuthContext';
import AppRoutes from './routes'; // routes/index.js에서 통합 관리
function App() {
return (
<AuthProvider>
<Router>
<AppRoutes />
</Router>
</AuthProvider>
);
}
export default App;
728x90
반응형
'STUDY > Project' 카테고리의 다른 글
게시글 수정 페이지 작성 및 삭제 추가 - EditpostPage, PostDetailPage (0) | 2025.05.07 |
---|---|
게시글 수정, 삭제 기능 추가하기 - postController (0) | 2025.05.07 |
게시판 페이지 작성 - PostListPage, PostDetailPage, CreatePostPage (0) | 2025.05.06 |
전역 상태 관리하기 - AuthContext, 로그아웃 기능 (0) | 2025.05.05 |
로그인 응답 구조로 인해 발생한 오류 "undefined" is not valid JSON (0) | 2025.05.04 |