Single Page Application (SPA)는 한 개의 페이지로 구성된 어플리케이션을 말한다.
사용자가 애플리케이션을 사용하는 동안 서버로부터 전체 페이지를 다시 로드하지 않고, 필요한 데이터만 받아와 동적으로 화면을 갱신한다.
SPA는 React, Angular, Vue.js 등의 프론트엔드 프레임워크에서 많이 사용된다. 이러한 프레임워크들은 SPA를 구현하기 위한 다양한 도우과 기능을 제공하는데 React에서는 React Router를 사용하여 SPA를 구현할 수 있다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>React App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>
ReactDOM.createRoot(document.getElementById('root'));
root.render(
<App />
);
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import Home from './components/Home';
import About from './components/About';
import Contact from './components/Contact';
ReactDOM.render(
<BrowserRouter>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/contact" component={Contact} />
</Switch>
</BrowserRouter>,
document.getElementById('root')
);
전통적인 웹 사이트를 만들 때 여러개의 페이지를 만들면 a.html, b.html 이런식으로 만들었다.
하지만 요즘에는 웹 사이트 전체 페이지를 하나의 페이지에 담아 동적으로 화면을 바꿔가며 표현한다.
HTML5의 History API를 사용. 하지만 요즘에는 Link 컴포넌트를 이용해 화면 변경하는 방법을 더 많이 사용한다고 한다.