HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/
📙
백엔드 알아야 할 지식
/
⛲
Single-Page Application(SPA)이란?
⛲

Single-Page Application(SPA)이란?

설명

notion image
notion image

일반 웹 어플리케이션

  • 일반적인 웹 애플리케이션은 URL이 변경됨에 따라 서버에서 html을 매번 받아와서 렌더링을 하게 됨
  • 레이아웃에 대한 것도 thymeleaf나 이런 것들 이용해서 서버쪽에서 처리 함. 여러 html 파일 합쳐서 렌더링 처리하는 부분도 서버에서

단일 페이지 웹 어플리케이션

  • 단일페이지 웹 어플리케이션 — url 변경시 특정 영역만 렌더링 됨. DOM조작을 통해서 렌더링이 이루어지게됨 → 클라이언트 개발 부담, 렌더링. 고객의 pc 자원을 활용 하기에, 서버에서는 이점을 볼 수 있음
  • 프론트와 백엔드 구분이 더 명확해짐.서버에서 thymeleaf나 이런 것들 통해서 신경 안써도 되니

시간 흐름에 따른 페이지 로딩절차 비교

notion image

일반적인 웹 페이지

  • HTTP 요청이 stateless 이기에 필요한 개념이 세션. 첫번째 요청과 두 번째 요청 사이에 유지하고 싶은 상태(예를 들어 로그인) 이런 것이 HTTP 만으로는 안 되니까
  • 사용자가 웹 서비스에 머문 일정시간 동안 유지되는 상태 — 세션
    • 로그인을 하게 되면 해당 세션에 사용자의 이메일이나 계정 정보 같은 것이 세션에 보관됨
    • 그 다음 요청이 해당 사용자의 요청이라는 것을 알기 위해서 쿠키(세션ID를 계속 실어서 보내는)를 사용
    • 사용자가 로그인을 하면 서버에서는 쿠키를 발급해 주고 브라우저에서 아무 처리 안해줘도 요청에 쿠키 실어서 보냄. 그럼 해당 세션에서 사용자 데이터 모델 찾아서 그 사용자(예를 들어 customerId같은)로 비즈니스 로직을 처리하게 됨
  • 세션에 메뉴 정보, 사용자 configuration 등의 정보를 세션에 계속 넣게 되면 세션이 커지게 됨 → SPA 기반에서는 브라우저에서도 일부 들고 있게 되는 것

SPA

  • 브라우저의 local storage(클라이언트 쪽의 persistence layer같은) 에 사용자 데이터 모델의 일부를 담아 놓음
  • local storage의 데이터 모델 일부를 통해서 처리를 할 수 있음. 매번 페이지 요청할 필요 없이 변경이 되어야할 때만 데이터 요청을 함(Dom manipulation, AJAX)
  • 일반적으로 DOM을 바꾼다고 해서 url이 바뀌지는 않음

라우팅 처리

notion image

서버 사이드 라우팅 처리

notion image
  • html에서 특정한 어떤 부분 클릭 하면 다른 페이지로 넘어가게 하는 것을 서버쪽에서 진행을 했던 것

클라이언트 라우팅 처리

  • 여기서 만약에 DOM만 바꾸고 요청 다시하면(새로고침) url이 바뀌지 않았기 때문에 처음의 페이지 그대로 다시 나오게 될 것임
  • HTML5 히스토리 API나 #(해쉬) 또는 $!(해쉬뱅) 처리를 이용해서 URL을 변경시킬 수 있음(javascript이용해서 클라이언트에서 처리하는 것)
    • 리액트를 이용하면 리액트 <Router> 태그로 명시해주면 내부적으로 알아서 javascript가 HTML5 히스토리 api를 이용해서 url을 변경해주는 것임
  • 이렇게 되면 서버에서는 뷰를 반환하는 건 전혀 없어짐. Json이나 XML을 반환하게 됨