1. 정의
- 단일 HTML 페이지
- 동적 업데이트
- 자바스크립트 기반
2. 주요 특징
- 단일 페이지 로드
- 한 번만 리소스 로드
- 새로고침 없음
- 클라이언트 사이드 렌더링(CSR)
- 브라우저에서 렌더링
- 서버 요청 감소
- 라우팅
- 클라이언트에서 처리
- History API 사용
- 데이터 처리
- REST API, GraphQL
- JSON 데이터 주고받음
3. 장점
- 빠른 사용자 경험
- 페이지 전환 없음
- 속도 빠름
- 모던 UX
- 애니메이션 지원
- 직관적 인터페이스
- 효율적 네트워크 요청
- 필요한 데이터만 요청
4. 단점
- SEO 어려움
- SEO: 검색 엔진 최적화(Search Engine Optimization).
- 웹 페이지가 검색 엔진 결과에서 잘 노출되도록 최적화하는 작업.
- SSR: 서버 사이드 렌더링(Server-Side Rendering).
- 서버에서 HTML을 미리 렌더링해 브라우저에 전달.
- SEO 문제 해결 가능.
- SSG: 정적 사이트 생성(Static Site Generation).
- 빌드 시 HTML 생성 후 배포.
- 성능과 SEO 모두 개선.
- 첫 로딩 속도
- 초기 리소스 다운로드 필요
- 복잡성 증가
- 상태 관리 복잡
- 라우팅 로직 필요
5. 대표 프레임워크/라이브러리
- React
- Vue.js
- Angular
- Svelte
6. 예시 코드
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>blog</title>
</head>
<body>
<nav>
<ul>
<li>
<a href="javascript:void(0);" onclick="renderList()">홈</a>
</li>
<li>
<a href="javascript:void(0);" onclick="renderSaveForm()">글쓰기</a>
</li>
</ul>
</nav>
<hr>
<section id="root">
</section>
<script></script>
</body>
</html>
<section>
부분만 브라우저의 새로고침 없이 업데이트되며, URL은 필요에 따라 변경될 수 있음Share article