[강의] SPA & 리액트 렌더링 방식

김하은·2023년 11월 29일
0

코드잇 강의 정리

목록 보기
54/60

싱글 페이지 애플리케이션(SPA) 이해하기

리액트 라우터에서 <a> 태그가 아닌 Link 컴포넌트로 하이퍼링크를 만든 이유가 뭘까?

  • 우리가 만든 게 (SPA) Single Pange Application이기 때문임
  • 클라이언트 사이드 렌더링(Client-side Rendering, CSR)
    • 클라이언트: 웹 브라우저
    • 렌더링: HTML 페이지를 만드는 것
    • 즉 웹 브라우저에서 자바스크립트로 HTML 페이지를 만드는 것
  • 싱글 페이지 애플리케이션
    • 하나의 HTML 문서 안에서 자바스크립트로 여러 페이지를 보여주는 사이트
    • Link 컴포넌트에서는 웹 브라우저의 기본 동작 대신에 리액트 라우터를 통해서 경로에 맞는 리액트 컴포넌트를 렌더링하고 주소창의 글자를 바꾸고 웹 브라우저에 기록을 추가함
    • 리퀘스트를 보내지 않고도 자바스크립트를 사용해서 마치 다른 HTML 페이지를 받은 것처럼 흉내내는 것
    • 개발 모드에서는 모든 가능한 경로에 대해서 똑같은 HTML을 보내주도록 설정 돼 있음
    • root div에다가 클라이언트사이드 렌더링을 하는데 리액트 라우터가 주소창에 적힌 경로를 읽어서 경로에 일치하는 컴포넌트를 렌더링하는 방식임
    • 클라이언트사이드렌더링으로 리액트 라우터를 사용하는 경우에는 서버에 배포할 때 따로 설정을 해줘야함

리액트를 렌더링하는 방식

대표적인 렌더링의 종류

클라이언트사이드 렌더링(Client-side Rendering)

  • 웹 브라우저에서 자바스크립트로 HTML을 만드는 것
  • 리액트로 할 수 있는 가장 기본적인 방식의 렌더링
  • 리액트로 작성한 코드는 자바스크립트로 변환이 가능한데 이런 변환을 트랜스파일링이라고 부름
  • 자바스크립트로 변환된 리액트 코드를 웹 브라우저에서 실행해서 HTML을 만드는 것

서버사이드 렌더링(Server-side Rendering)

  • 서버에서 HTML을 만들고 리스폰스로 보내주는 것
  • 백엔드 서버에서 리퀘스트를 받으면 상황에 맞는 HTML을 만들어서 리스폰스로 보내주는 방식
  • 이미 렌더링 된 것이 웹 브라우저에 도착하니까 훨씬 빨리 화면을 띄워줄 수 있고,검색 엔진에서 좋은 점수를 받아서 검색했을 때 사이트가 잘 노출될 수 있다는 장점이 있음

정적 사이트 생성(Static Site Generation)

  • 미리 HTML 파일을 만들어서 서버를 배포하는 것
  • 서버에서 렌더링 하는 것도 좋지만, 데이터가 거의 바뀌지 않는다면 매번 새로 만드는 건 낭비임
  • 미리 HTML 파일로 만들고 이걸 서버로 배포하는 방법을 사용하는데, 이런 방식을 '정적 사이트 생성'이라고 함
  • 서버에서는 리퀘스트가 들어오면 HTML 파일을 읽어서 리스폰스로 보내주는 것
  • '정적 사이트 생성'에서 정적이라는 말의 의미는 HTML을 파일로 만든다는 것임
  • 리액트 코드로 HTML 파일을 만든다고 생각하면 됨
  • 자바스크립트를 쓸 수 있기 때문에 정적으로 생성된 사이트에서도 동적인 데이터를 가져와 페이지를 보여줄 수 있음

렌더링을 활용한 리액트 기술 세 가지

Next.js

  • 리액트 서버사이드 렌더링을 편하게할 수 있음
  • 리액트에서는 서버사이드 렌더링을 하는 기능들을 제공하고 있지만, 아주 기본적인 방법만 제공해서 작성해햐 하는 코드의 양도 많고 복잡함
  • 서버사이드 렌더링을 대신 구현해주는 기술들 중 가장 인기 있는 기술
  • 리액트 라우터랑은 다르게 HTML 파일을 나누듯이 자바스크립트 파일을 나눠 놓으면 곧바로 페이지로 사용할 수 있다는 장점이 있음

Gatsby

  • 리액트로 정적 사이트 만들기
  • Gatsby는 리액트 코드를 미리 렌더링 해서 프로젝트를 빌드할 때 HTML 파일로 만듦
  • Gatsby를 사용하면 리액트로 만든 사이트를 빌드해서 손쉽게 HTML 파일로 만들 수 있음
  • 회사 소개 사이트나 동아리 홈페이지 혹은 포트폴리오 사이트 같이 정적인 사이트를 리액트로 만들때 사용할 수 있음

React Native

  • 리액트로 작성한 코드를 모바일 앱으로 만들 수 있게 해 줌
  • 리액트 코드로 개발하면 웹과 안드로이드와 iOS 앱에서 사용하는 공통적인 코드를 한 번에 개발할 수 있다는 장점이 있음
  • 여러 플랫폼의 서비스를 빠르게 개발할 수 있기 때문에 많은 스타트업에서 React Native를 활용하고 있음
profile
아이디어와 구현을 좋아합니다!

0개의 댓글