오늘은 SPA 그리고 SSR, CSR에 대해 알아보자.
신입 개발자 면접에 나오는 단골 질문, 도대체 이게 뭐란 말인가?
SPA = 해석 그대로 하나의 페이지 ( HTML )만 존재하는 것이다.
🖐 질문
HTML이 하나인데 어떻게 여러 페이지를 보여줄 수 있을까?
Virtual Dom으로 보여주는 페이지를 동적으로 바꿔주기 때문에 여러 페이지가
있는것처럼 보여지는 것이다.
( JavaScript가 HTML로 번역하기 때문에 HTML처럼 보여진다. )
SPA는
CSR
( Client Side Rendering ) 방식으로 렌더링 하여
최초 로딩때 모든JavaScript
,CSS
,HTML
을 렌더하고 ( 캐시에 전부 저장 )
그 후로는 비동기로 데이터를 받아올때만 서버와 통신한다.
빠르고
깜빡거림
이 없다.JavaScript
, CSS
, HTML
을 전부 읽기 때문에SSR
에서는 사용자 정보를 서버측 세션으로 관리할 수 있지만CSR
방식에서는 클라이언트측 쿠키 말고는 사용자 정보를 저장할 공간이SEO
)SEO
)Next.js
, Vue = Nuxt.js
인 SSR
로 해결가능 )최초 로딩때 서버에서 전체 페이지를 로딩하여 보여주고 이후에는 사용자의
요청이 올때마다 렌더하는 방식이다.SEO
가 어렵다는 큰 단점이 있다.
서버에서 렌더링 하여 클라이언트로 응답하는것으로 아래에 그림의 단계처럼
완전히 렌더가 되지 않을 경우에 클라이언트에는 화면이 그려지지만
조작이 되지 않아 사용자가 당황할 수 있는 경험 측면에서 좋지 않은 단점이 있다.
하지만SEO
가 좋기 때문에 큰 장점으로 사용된다.
초기 렌더는 CSR보다 빠른 편이지만 이후부터는 CSR이 더 빠르다.
가장 큰 차이는 초기 렌더링속도, SEO, 보안이 있다.
이 두가지 기법은 SSR with Hydration이다.
CSR의 장점인 초기 렌더 이후 빠른 페이지 전환,
SSR의 장점인 SEO
서로의 장점을 가져온 Hydration이다.
즉, 처음엔 SSR로 렌더를 빠르게 하고 이후부터는 CSR로 빠른 페이지 전환을 하는 것이다.