오늘은 리액트 튜터님의 JavaScript로 하는 SPA 특강이 있었다.
평소에도 SPA 좋은 거 알겠는데 그래서 어떻게 하는거지? 하는 궁금증이 있었는데, 오늘 가려운 부분을 긁은 듯한 상쾌함이 생겼다.
배운 내용과 추가로 조사한 내용을 알아보도록 하자.
MPA(Multiple-Page Application)
는 여러 개의 페이지로 구성된 Application이다.
MPA는 최초 접속 시 초기 페이지에 필요한 리소스만 다운 받고, 페이지를 이동할 때마다 Server에 Request를 보내서 새로운 HTML 파일을 다운받는다.
네이버 메뉴바를 예로 들자면, 메일/카페/블로그/지식iN으로 이동하기 위해 클릭할 때마다 서버에 Request를 보내 (cafe.html, blog.html 등등...) 새로운 파일을 다운 받게 되는 것이다.
초기 구동 속도
가 빠르다.SEO
(Search Engine Optimization, 검색엔진 최적화)에 유리하다.사용자 경험
에 좋지 않다.성능
에 좋지 않다.SPA(Single-Page Application)
는 하나의 페이지로 구성된 Application이다.
SPA는 전체 페이지 구현에 필요한 정적 리소스를 `최초 접근 시 한 번에` 다운받는다. 이후 새로운 페이지로 이동할 때 전체 페이지를 다시 렌더링하지 않고 변경되는 부분만을 갱신한다. 필요한 데이터는 JSON으로 전달받기 때문에 전체적인 트래픽을 감소시킬 수 있다.
사용자 경험
에 좋다.웹 성능
을 향상시킬 수 있다.생산성
을 향상시킬 수 있다.초기 구동 속도
가 느리다.Vanila JavaScript로 SPA를 구현하는 방법(ajax, hash, pjax 등)이 있지만 상당히 번거롭고, SEO 대응이 어렵다.
그런데 다행히도!! SPA 개발을 편리하게 도와주는 JavaScript 기반 SPA 프레임워크와 라이브러리가 존재한다.
대표적으로 React
, Vue
, Angular
가 있다. 각 프레임워크/라이브러리 별 장단점이 있지만 지금은 React
가 가장 많이 쓰이고 있다. (결론: React 최고 👍)