SPA
: single page application
하나의 HTML 파일을 기반으로 자바스크립트를 이용해 동적으로 화면의 컨텐츠를 바꾸는 방식의 웹 어플리케이션
한 페이지에 머무르면서 필요한 데이터를 서버에서 받아와 부분적으로 업데이트 하는 것
MPA
: multiple page application
사용자가 페이지를 요청할 때 마다, 웹 서버가 요청한 UI와 필요한 데이터를 HTML로 파싱해서 보여주는 방식의 웹 어플리케이션
전통적 방식을 이용한다면 SPA가 사용하는 렌더링 방식은 CSR이고, MPA가 사용하는 렌더링 방식은 SSR이다.
전통적인 방식을 벗어나 SPA에서도 적절히 SSR을 구현할 수 있고 그때의 장점과 이유를 알아보자.
react.js, vue.js 가 대표적인 CSR 방식이다.
client side rendering 방식으로 렌더링이 클라이언트 쪽에서 일어난다. (화면에 보여줄 내용을 클라이언트에서 생성하기 때문에 클라이언트 사이드 렌더링)
브라우저가 서버에 html과 js 파일을 요청하고 이후 서버로 부터 html와 static 파일을 받아오고 나면, 사용자의 요청에 따라 js를 이용해서 동적으로 렌더링하는 방식이다.
즉 서버에서 처리 없이 클라이언트로 보내주기에 js가 모두 다운로드 되고 실행이 끝나기 전까지는 사용자는 볼 수 있는 것이 없다.
👍 장점 :
👎 단점 :
next.js, nuxt.js 가 대표적인 SSR 방식이다.
server side rendering 방식으로 서버 쪽에서 렌더링 준비를 마친 후에 클라이언트에 전달하는 방식이다.
브라우저가 페이지에 요청할 때마다 해당 페이지에 관련된 html, css, js 파일 및 데이터를 받아와 렌더링 한다.
유저가 서버에 요청을 보내면 서버는 즉시 렌더링이 가능한 html 파일을 만든다. 클라이언트에 파일이 전달되는 순간 html은 즉시 렌더링 된다.(단 사이트 자체는 조작이 불가능 하다. js가 읽히기 전)
이후 클라이언트가 js를 다운받고, 조작은 불가능 하지만 다운이 받아지고 있는 사이에 유저는 컨텐츠를 볼 수 있다. 단 이때의 사용자 조작을 기억한다.
브라우저가 js를 실행하고 이후 성공적으로 컴파일 되면 기억하고 있던 사용자 조작이 실행된다.
👍 장점 :
👎 단점 :
pages 폴더 아래에 폴더 및 파일을 구성하면 자동으로 라우팅 처리가 되어 개발에 편리하고 처음 웹 페이지 로드시에 SSR로 SEO를 최적화하며, 클라이언트와 상호작용할 때에는 CSR 방식으로 필요한 데이터만 요청할 수 있기 때문에 SSR과 CSR의 장점을 모두 적용할 수 있다.