SPA는 Single Page Application의 약자로 한 개의 페이지로 구성된 어플리케이션을 뜻한다.
MPA는 Multiple Page Application의 약자로 여러 개의 페이지로 구성된 어플리케이션을 뜻한다.
SPA는 우리가 주소창에 url을 입력한 후 엔터를치고 들어가면
처음 사이트에 접속했을 시에 프론트엔드 서버에서 사이트의 html, css, javascript와 같은
정적 리소스들을 전부 받아온 후 사용자가 화면이동을 할 때마다 화면에 해당하는 부분만 잘라서 보여주는 방식이다.
이는 CSR(Client Side Rendering)방식으로 렌더링한다고 말한다.
SPA는 처음 데이터를 불러올 땐 느리나, 이후에는 빠르다.
이는 이미 받아온거에서 바로바로 화면에 해당하는 부분만 보여주기 때문이다.
MPA는 우리가 브라우저에서 화면이동을 할 때마다
서버에 접속해서 해당페이지에 대한 완성된 형태의 HTML파일을 매번 받아와서 화면에 그린다.
이는 SSR(Server Side Rendering)방식으로 렌더링한다고 말한다.
추가로
Next.js에서는 SPA와 SSR을 사용하기 때문에
간혹 router.push로 클라이언트 사이드로 페이지 이동을 할 때
속도가 너무 빨라 script를 받아오기 전에 페이지에 html, css를 그려버려
에러가 나오곤 한다.
이러한 현상이 일어나는 이유를 알기 위해서는 SSR(Server Side Rendering),
CSR(Client Side Rendering)에 대한 이해가 필요하다.