말 그대로 하나의 페이지로 구성된 어플리케이션.
하나의 페이지가 다양한 페이지로 보이게 하기 위해 CSR
과 밀접한 관계에 있다.
최초에, 클라이언트는 서버로부터 HTML과 JavaScript 파일을 전송받는다.
문제는, SPA 방식 어플리케이션의 이 JavaScript
파일에는 이 웹 프로젝트의 모든 로직을 담은 javascript 소스와 이 프로젝트에서 사용하는 frameworks의 소스 코드까지 모두 포함되어 있기 때문에 덩치가 크다!
▲작고 소중한 HTML과 커다란 JavaScript
.
.
왜 그렇게 한꺼번에 모든 소스를 넘겨줘야 하는거야? 싶었는데
아마도 SPA는 가진 캔버스가 빈 페이지 한장밖에 없고,
사용자의 요구사항에 따라 이것도 그리고 저것도 그려야 하기 때문에
처음부터 모든 로직에 대한 소스를 가지고 있어야 하는 게 아닐까?🙄
애초에 서버가 여러가지의 페이지를 가지고 있다. 클라이언트가 어떤 페이지를 요청하면 서버가 보내주는 방식.
HTML은 개발자가 애플리케이션을 개발하는 과정에서 작성되며, 애플리케이션의 빌드 또는 배포과정에서 정적 파일로 생성되어 서버에 저장된다!
아무튼 MPA
앱은 HTML을 서버가 가지고 있고, 서버에서 클라이언트로 넘기게 되므로 SSR
방식을 사용한다고 할 수 있음.
▲페이지A의 내용이 담겨서 커진 HTML과, 상대적으로 작은 JavaScript 파일
페이지A
의 HTML이 서버에 이미 존재하므로 페이지A의 기능(동작)에 대한 JavaScript 파일만 좀 더 가져오면 된다!Next12
로 만든 프로젝트는, MPA 앱으로서 페이지가 여러개 존재하지만 SSR과 CSR을 둘 다 사용할 수 있었다.
처음 페이지A가 로딩될때는 SSR
을 통해 서버에서 페이지A의 초기 모습이 담긴 HTML
을 받아온다.
이후에 사용자가 입력한 데이터에 따라 다른 내용을 표시해야 하거나, 그 외의 이유로 화면을 변경해야 할 필요가 있을 때는 CSR
을 사용하여 새로운 페이지를 보여주는 방식으로 서버와의 통신을 줄인다.