SPA(Single Page Application)는 초기에 HTML 페이지를 한 번만 로드하고, 이후 JavaScript로 페이지를 동적으로 갱신하는 웹 애플리케이션 방식이다. 페이지 전환 시 전체 새로고침 없이 부드러운 사용자 경험을 제공한다.
MPA vs SPA
MPA (Multi-Page Application):
URL 변경 → 서버에 새 HTML 요청 → 전체 페이지 새로고침
장점: SEO, 초기 로딩, 단순함
단점: 페이지 전환 시 깜빡임
SPA:
URL 변경 → JS가 컴포넌트 교체 (History API)
서버는 JSON 데이터만 반환
장점: 빠른 전환, 앱 같은 경험
단점: 초기 로딩 느림, SEO 기본적으로 어려움
jsx
import { BrowserRouter, Route, Routes, Link } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</nav>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/users/:id" element={<UserDetail />} />
</Routes>
</BrowserRouter>
);
}
SSR (Server-Side Rendering)
SPA의 SEO 문제를 해결하는 방법:
Next.js, Nuxt.js: 첫 요청 시 서버에서 HTML 렌더링
이후 SPA처럼 동작 (Hydration)
관련 개념
- •React — 대표적인 SPA 라이브러리
- •Vue.js — SPA 프레임워크
- •DOM — SPA가 조작하는 대상
참고문헌
- •MDN Web Docs — History API