React
client-side routing
JeanneLee57
2023. 10. 9. 23:29
라우팅
라우팅이란 사용자가 웹사이트의 여러 페이지로 이동하도록 해주는 프로세스를 말한다. 라우팅과 렌더링은 다르다. 특정 라우트에 대한 요청을 보낼 때마다 그 페이지를 렌더링하게 되지만, 모든 렌더링이 라우팅의 결과는 아니다.
Client-side routing
clinet-side routing은 자바스크립트에 의해서만 처리되는 라우팅이다. 웹 애플리케이션의 모든 내용을 한 페이지에서 동적으로 로드하고 표시하는 싱글 페이지 애플리케이션(SPA)은 클라이언트사이드 라우팅 방식으로 구현된다. 전체 페이지를 새롭게 렌더링하지 않기 때문에 부드러운 페이지 이동 경험을 제공할 수 있다.
client-side routing의 장점과 단점
장점
- 렌더링되는 데이터의 양이 적어 컴포넌트 간의 라우팅이 빠르게 처리된다.
- 컴포넌트를 전환할 때 애니메이션 및 전환을 쉽게 구현할 수 있다.
단점
- 초기 로딩 시에 전체 웹 사이트 또는 웹 앱을 로드해야 해서 시간이 오래 걸린다.
- SEO 면에서 불리하다
- 일반적으로 외부 라이브러리가 필요하다.
라우팅의 발전 과정
- Link 방식
- 전통적인 라우팅 방식으로, Link 태그를 이용해 페이지를 전환한다.
- 링크를 클릭하면 href 어트리뷰트의 값이 url의 path에 추가돼 주소창에 나타나고 해당 리소스를 서버에 요청한다.
- 서버사이드 렌더링 방식으로 작동한다.
- AJAX 방식
- AJAX란 자바스크립트를 이용해서 비동기적으로 서버와 브라우저가 데이터를 교환할 수 있는 통신 방식을 말한다.
- 전체 페이지를 새롭게 렌더링하지 않고 페이지의 일부만 갱신해 불필요한 리소스를 중복 요청하지 않게 해준다.
- Hash 방식
- AJAX 방식으로 라우팅을 했을 때 history 관리가 되지 않는다는 장점을 보완한 방식이다.
- hash(#)를 uri에 추가해 하위 주소를 추가함으로써 고유의 url을 부여하면서도 서버에는 아무런 요청도 하지 않는다.
- 웹 크롤러가 hash 방식으로 만들어진 사이트의 데이터를 수집할 수 없어 SEO에 불리하다.
- PJAX 방식
- history API의 pushState와 popstate를 활용해 라우팅을 한다.
- hash 방식의 SEO 문제를 해결할 수 있다.
참고 자료
https://www.pluralsight.com/guides/pros-and-cons-of-client-side-routing-with-react