728x90
728x90
SPA(Single Page Application)
: 하나의 HTML 페이지에서 콘텐츠를 동적으로 업데이트하며 동작하는 웹 애플리케이션입니다. SPA에서는 새로고침 없이 필요한 데이터를 로드하여 페이지 전환을 처리하며, 사용자 경험을 향상시키는 데 주로 사용됩니다.
SPA의 특징
- 단일 HTML 파일
- 서버에서 단일 HTML 파일을 로드한 후, 이후의 모든 페이지 전환은 클라이언트에서 JavaScript로 처리.
- HTML, CSS, JavaScript 등의 리소스가 초기 로드 시 대부분 다운로드됨.
- 비동기 데이터 로드
- AJAX 요청이나 Fetch API를 사용하여 필요한 데이터를 서버에서 비동기적으로 가져와 화면에 표시.
- 라우팅 관리
- 클라이언트 측에서 라우팅을 처리하여 URL 변경 시 새로고침 없이 콘텐츠를 전환.
- React Router, Vue Router 등 라이브러리를 사용하여 구현.
- 빠른 사용자 경험
- 새로고침 없이 콘텐츠를 업데이트하므로, 전통적인 다중 페이지 애플리케이션(MPA)보다 더 빠르고 부드러운 사용자 경험 제공.
SPA 작동 원리
- 초기 로드
- 클라이언트가 서버에 요청을 보내면, 서버는 단일 HTML 파일과 JavaScript 파일을 전달.
- JavaScript 실행
- 브라우저는 JavaScript를 실행하여 애플리케이션의 초기 상태를 렌더링.
- 사용자 상호작용
- 사용자가 버튼 클릭이나 링크 이동과 같은 상호작용을 하면, 필요한 데이터를 서버에서 가져와 화면을 업데이트.
- DOM 업데이트
- 페이지 전체를 다시 로드하지 않고, 변경된 부분만 DOM에 업데이트.
SPA의 장점
- 빠른 페이지 전환
- 새로고침 없이 콘텐츠를 업데이트하므로 사용자 경험이 부드럽고 반응이 빠름.
- 효율적인 서버 요청
- 필요한 데이터만 서버에서 가져오므로, 네트워크 트래픽이 줄어듦.
- 더 나은 사용자 경험
- 애플리케이션처럼 동작하므로 데스크톱 애플리케이션과 유사한 경험 제공.
- 클라이언트 중심 로직
- 클라이언트 측에서 데이터를 처리하므로 서버 부담 감소.
SPA의 단점
- SEO 문제
- 검색 엔진은 초기 HTML만 크롤링할 수 있으며, JavaScript로 렌더링된 콘텐츠를 인식하지 못할 수 있음.
- 해결 방법: SSR(Server-Side Rendering) 또는 프리렌더링 도입.
- 초기 로딩 시간 증가
- 초기 로딩 시 모든 JavaScript와 데이터를 로드해야 하므로 로딩 시간이 길어질 수 있음. 특히 애플리케이션 규모가 커질수록 초기 로딩 속도가 느려질 가능성이 큽니다
- 브라우저 의존성
- JavaScript에 의존하므로, JavaScript를 비활성화한 환경에서는 정상적으로 작동하지 않을 수 있음.
- 복잡한 상태 관리
- 클라이언트 측에서 애플리케이션 상태를 유지하고 관리해야 하므로, 대규모 애플리케이션에서는 복잡성이 증가.
SPA와 관련된 주요 기술 및 프레임워크
- 프레임워크
- React: 페이스북에서 개발한 UI 라이브러리.
- Vue.js: 가볍고 유연한 SPA 개발 프레임워크.
- Angular: 구글에서 개발한 완전한 SPA 프레임워크.
- 라우팅
- React Router: React 기반 라우팅 라이브러리.
- Vue Router: Vue.js 전용 라우팅 라이브러리.
- 상태 관리
- Redux: React 생태계에서 주로 사용되는 상태 관리 라이브러리.
- Vuex: Vue.js에서 사용하는 상태 관리 도구.
- Recoil, MobX: SPA의 상태 관리를 돕는 대안.
- 데이터 통신
- AJAX: 서버와 비동기 통신을 위한 기술.
- GraphQL: 효율적인 데이터 쿼리를 제공하는 언어 및 런타임.
- REST API: SPA와 서버 간 데이터 교환을 위한 표준.
SPA와 대안(MPA, SSR, CSR) 비교
| 특징 | SPA (Single Page Application) | MPA (Multi-Page Application) | SSR (Server-Side Rendering) |
| 페이지 전환 속도 | 빠름 | 느림 | 보통 |
| SEO 친화성 | 낮음 (추가 작업 필요) | 높음 | 높음 |
| 초기 로딩 속도 | 느림 | 빠름 | 보통 |
| 복잡성 | 높은 구현 복잡성 | 상대적으로 간단 | 중간 |
| 사용자 경험 | 부드러운 인터랙션 | 새로고침으로 인한 지연 발생 | 부드럽지만 페이지 전환 필요 |
SPA는 빠르고 부드러운 사용자 경험을 제공하는 데 적합하지만, SEO나 초기 로딩 속도가 중요한 프로젝트에서는 SSR이나 하이브리드 접근 방식을 도입하는 것이 더 적합할 수 있습니다. 프로젝트의 요구 사항에 따라 SPA를 선택하거나, SSR 및 기타 대안과 조합하는 전략을 고려해야 합니다. 😊
728x90
728x90
'취준 > CS 기술면접 준비' 카테고리의 다른 글
| 쿠키(Cookie)와 세션(Session) (3) | 2025.01.05 |
|---|---|
| Virtual DOM 개념 (2) | 2025.01.05 |
| CSR (Client-Side Rendering) vs SSR (Server-Side Rendering) (5) | 2025.01.05 |
| DOM(Document Object Model)이란? (2) | 2025.01.05 |
| 웹 표준(Web Standards)이란? (1) | 2025.01.05 |
댓글