우선 SPA 라는 방식이 있다. 말 그대로 하나의 웹 애플리케이션, 웹 사이트가 하나의 페이지로 이루어지는 방식이다. 처음 이 말을 들으면
🧐 엥 어떻게 웹 사이트가 페이지 한개로 만들어져? 페이지가 엄청 많이 필요하지 않나? 라는 생각이 든다.
이 말을 이해하기 위해서 우선 전통적인 웹 사이트를 생각해보자.

그림 왼쪽의 전통적인 웹사이트에서는 페이지를 이동할 때 매번 html로 페이지 전체를 불러와야 했다.
그러나 사용자와 서비스 사이에 점점 더 많은 상호 작용이 생기는 쪽으로 발전했고, 중복되는 요소들(header, footer, 메뉴 창 등등)을 매번 불러오는 것은 서버와의 불필요한 트래픽을 발생 시켜 더 느린 반응성을 유발한다.
그래서 페이지를 전환해도 중복되는 부분은 새로 불러오지 않는 방식인 SPA가 만들어졌다.
SPA 방식의 웹 사이트에서는 업데이트에 필요한 데이터만 서버에서 전달 받고,
→ javascript가 이 데이터로 html 요소를 동적으로 생성해서 → 화면에 보여준다.
SPA로 웹 애플리케이션을 개발할 때 React를 사용함으로써 얻을 수 있는 장점들이 있다.

이전에 사용하던 JQuery 같은 js 프레임워크들은 사용자가 웹 애플리케이션과 상호작용할 때마다 HTML DOM에 직접적으로 영향을 끼쳤다. 하지만 위 그림에서도 볼 수 있듯이 리액트는 virtual DOM을 만들어서 사용자와 인터랙션한다. 따라서 HTML 문서는 건들이지 않게 되고 이는 성능 향상으로 이어진다!
ReactJS는 불필요한 라이브러리들을 내장하지 않고 가볍다.
ReactJS의 가장 강력한 장점이다. 유저 인터페이스를 작게 분해하고 이것들을 재사용이 가능한 컴포넌트로 만드는 방식은 아주 복잡한 웹 사이트들을 더 빠르고 쉽게 만들 수 있게 해준다! 게다가 유지 보수도 쉬워진다.
지금까지 SPA에 대해서 알아봤는데 실제로 React SPA 방식을 사용한다고 하더라도 만들어야 할 웹 애플리케이션은 매우매우 복잡하고 다양한 데이터를 보여주어야 한다.
그래서 여러 view들에 알맞은 url을 통해 접근할 수 있게 하는데, 이렇게 주소에 따라 다른 뷰를 변경해 보여주는 과정을 Routing이라고 한다.
React 자체에는 라우팅 기능이 없기 때문에 라이브러리를 사용한다.
npm install react-router-dom
react router 라이브러리를 설치한다.
import { BrowseRouter, Routes, Route, Link } from "react-router-dom";
react-router-dom에서 필요한 모듈들을 불러온다.