SPA란 Single Page Application 의 약자며, 말 그대로 한개의 Page로 구성된 Application이다.
단 한 번만 리소스(HTML, CSS, JavaScript)를 로딩하고 그 후에는 데이터를 받아올 때만 서버와 통신한다.
MPA란 Multi Page Application의 약자로 탭을 이동할 때 마다 새로운 페이지를 서버로부터 받아와서 새로 랜더링하는 전통적인 웹페이지 구성 방식이다.
AJAX 등장 이후부터는 SPA가 주로 개발되어 진다.
CSR 이란 Client Side Rendering의 약자로
자바스크립트로 변환된 리액트, 뷰 같은 코드를 웹 브라우저에서 실행해서 HTML을 만드는 걸 말한다.
SPA에서는 필요한 모든 정적 데이터들을 한번에 다운로드 받은 후에 , 새로운 요청이 있을때 요청이 온 부분만 업데이트 시키는 방식을 사용기 때문에 CSR이라는 방식을 사용한다.
React.js, Vue.js, Angular.js 로 SPA를 만들고 있다면
렌더링 방식을 특별히 바꾸지 않는이상 자연스럽게 CSR을 사용하게 된다.
SSR 이란 Server Side Rendering의 약자로
백엔드 서버에서 리퀘스트를 받으면 상황에 맞는 HTML을 만들어서 리스폰스로 보내주는 방식을 의미한다.
MPA에서는 새로운 요청이 있을 때 마다, 서버에서 렌더링된 정적 리소스를 받아오기 때문에 SSR 방식을 사용하게 된다.
주로 php, jsp로 MPA를 만들게 되며, 자연스럽게 SSR 방식을 사용하게 된다.
요약:
일반적으로 SPA에서는 CSR을, MPA에서는 SSR을 사용한다.
하지만 꼭 그런것만은 아니다. 렌더링을 어디서 하는지, 페이지는 몇개인지 등에 따라 정할 수 있다.
SSG는 Static Site Rendering의 약자이다.
서버에서 HTML을 완성하여 렌더링 시킨다는 점에서 SSR과 유사하지만
"언제" 만들어졌냐에 차이가 있다.
SSG는 빌드타임 때 미리 HTML을 생성해 놓고 요청이 들어왔을 때 해당 페이지를 보여준다.
즉, SSG는 미리 다 만들어두니까 바뀔일이 거의 없는 페이지에 적합하다.
SSR은 런타임때 서버에서 HTML을 생성하여 보여주니까, 데이터가 달라져서 미리 만들어두기 어려운 페이지에 적합하다.
유저랑 상호작용이 많고 고객의 개인정보로 기준으로 이루어지는 서비스라면 검색엔진 노출보다 고객의 데이터를 보호하는 것이 더 중요할 수 있다
회사홈페이지이기 때문에 상위노출이 필요하고 누구에게나 항상 같은 내용을 보여줘야하며 매주 업데이트 되어야한다면
회사홈페이지이기 때문에 상위노출이 필요하고 누구에게나 항상 같은 내용을 보여줘야 하지만 업데이트를 거의 하지 않아도 된다면
만약 사용자에 따라 페이지 내용이 달라지며 화면깜빡임 없는 빠른 인터렉션이 중요하고 상위노출이 필요하다면
리액트 SSR을 조금 더 편하게 만들어준다.
리액트에서도 SSR 기능을 제공하고 있지만 , 아주 기본적인 것만 제공한다고 한다.
그래서 만들어지게 된 것이 Next.js이다. 심지어 리액트 공식 사이트에서도 Next.js를 추천한다.
특히 리액트 라우터랑은 다르게 HTML 파일을 나누듯이 자바스크립트 파일을 나눠 놓으면 곧바로 페이지로 사용할 수 있다는 장점이 있다.
리액트로 정적 사이트 만들기 가능
Gatsby는 리액트 코드를 미리 렌더링 해서 프로젝트를 빌드할 때 HTML 파일로 만들어 준다.
이런 웹사이트를 정적인 웹이라고 이야기 한다.
회사 소개 사이트나 동아리 홈페이지 혹은 포트폴리오 사이트 같이 정적인 사이트를 리액트로 만들고 싶다면 Gatsby를 추천한다.
모바일 앱도 리액트로 만들 수 있다.
React Native는 리액트로 작성한 코드를 모바일 앱으로 만들 수 있게 해 준다.웹과 안드로이드와 iOS 앱에서 사용하는 공통적인 코드를 한 번에 개발할 수 있다는 장점이 있다.
압도적 감사 (출처)
렌더링 삼형제 CSR, SSR, SSG 이해하기
[10분 테코톡] 🎨 신세한탄의 CSR&SSR