React

client-side routing

2023. 10. 9. 23:29
목차
  1. 라우팅
  2. Client-side routing
  3. client-side routing의 장점과 단점
  4. 라우팅의 발전 과정

라우팅

라우팅이란 사용자가 웹사이트의 여러 페이지로 이동하도록 해주는 프로세스를 말한다. 라우팅과 렌더링은 다르다. 특정 라우트에 대한 요청을 보낼 때마다 그 페이지를 렌더링하게 되지만, 모든 렌더링이 라우팅의 결과는 아니다.

 

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://poiemaweb.com/js-spa

https://www.pluralsight.com/guides/pros-and-cons-of-client-side-routing-with-react

'React' 카테고리의 다른 글

[React] 리액트 버전 18의 주요 특징들  (0) 2023.10.10
[React] 리액트 앱에 인증 추가하기  (2) 2023.05.01
[React] 리액트 라우터 data api 사용하기  (0) 2023.04.26
[Redux] 비동기 작업 처리하기(useEffect, thunk)  (0) 2023.04.21
[React] 리액트 성능 최적화: React.Memo, useCallback, useMemo  (0) 2023.04.18
  1. 라우팅
  2. Client-side routing
  3. client-side routing의 장점과 단점
  4. 라우팅의 발전 과정
'React' 카테고리의 다른 글
  • [React] 리액트 버전 18의 주요 특징들
  • [React] 리액트 앱에 인증 추가하기
  • [React] 리액트 라우터 data api 사용하기
  • [Redux] 비동기 작업 처리하기(useEffect, thunk)
JeanneLee57
JeanneLee57
공부하고 기록을 남기는 개발자 Jeanne
JeanneLee57
코딩은 진리
JeanneLee57
전체
오늘
어제
  • 분류 전체보기 (117)
    • Javascript (15)
    • React (15)
    • Next.js (8)
      • Next.js 베타 문서 번역 (5)
    • 프로젝트 (34)
      • 미니 프로젝트 & 과제 (25)
      • SEB 44 pre-project (1)
      • SEB 44 main-project (8)
    • 알고리즘 (12)
    • 부트캠프 준비 (6)
    • 기술면접 (3)
    • CS (7)
    • 코드스테이츠 프론트엔드 부트캠프 (12)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • Next.js
  • 구조분해할당
  • react
  • codestates
  • 유데미
  • 알고리즘
  • CSS
  • 부트캠프준비
  • 고차함수
  • 프론트엔드
  • HTML
  • 프로그래머스
  • 프리코드캠프
  • JavaScript
  • 부트캠프
  • useEffect
  • 코드스테이츠
  • 회고
  • RTK
  • 번역

최근 댓글

최근 글

hELLO · Designed By 정상우.
JeanneLee57
client-side routing
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.