Single Page Application & React Router
๐ย SPA
๐ย SPA์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
์ ํต์ ์ธ ์น ์ฌ์ดํธ์์๋ ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ ๋ด์ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ ๋, ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋งค๋ฒ HTML ํ์ผ๋ก ๋ ํ์ด์ง ์ ์ฒด๋ฅผ ๋ถ๋ฌ์์ผ๋ง ํ๋ค.
SPA๋ Menu์ Footer ๋ฑ๊ณผ ๊ฐ์ด ํ์ด์ง ์ ํ ์ ํ์ ์ค๋ณต๋๋ ๋ถ๋ถ์ ์๋ก ๋ถ๋ฌ์ค์ง ์๋๋ค. ์ ํต์ ์ธ ์น ์ฌ์ดํธ์์๋ โํ์ด์ง ์ ์ฒด๋ฅผ ๋ถ๋ฌ์ค๋ ํ์โ๋ฅผ ๋ณดํต ๊น๋นก์ธ๋ค๊ณ ํํํ๋ค.
์น ์ฌ์ดํธ๊ฐ ๋ณด๋ค ๋ณต์กํด์ง๊ณ ์ฑ์ ํํ๋ฅผ ๋๋ฉด์, ์ฌ์ฉ์์ ์๋น์ค ์ฌ์ด์ ๋ ๋ง์ ์ํธ์์ฉ์ด ์ผ์ด๋๊ฒ ๋์๋ค. ์ด๋๋ง๋ค Header๋ Navigation Bar์ ๊ฐ์ด ์ค๋ณต๋๋ ์์๋ค์ ๋งค๋ฒ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ํธ๋ํฝ ์ฆ๊ฐ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ํ๋ฅผ ์ผ๊ธฐํ๋ค.
1990๋ ๋ ํ๋ฐ์ HTML ๋ฌธ์ ์ ์ฒด๊ฐ ์๋๋ผ ์ ๋ฐ์ดํธ์ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฐ์, JavaScript๊ฐ ์ด ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ์ฌ HTML ์์๋ฅผ ์์ฑํ์ฌ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด ๊ฐ๋ฐ๋์๋ค. 2000๋ ๋ ์ค๋ฐ๋ถํฐ ์ด๋ฐ ๋ฐฉ์์ด ๋ณดํธํ ๋์์ผ๋ฉฐ, ์ด๊ฒ์ด SPA(Single Page Application)์ด๋ค.
๐ย SPA๋?
๐ย SPA์ ์ฅ์
- ์ ์ฒด ํ์ด์ง๊ฐ ์๋๋ผ ํ์ํ ๋ถ๋ถ์ ๋ฐ์ดํฐ๋ง ๋ฐ์์ ํ๋ฉด์ ์ ๋ฐ์ดํธ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์์ ์ธํฐ๋์ ์ ๋น ๋ฅด๊ฒ ๋ฐ์ํ๋ค.
- ์๋ฒ์์๋ ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ๋ง ๋๊ฒจ์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๋ฒ ๊ณผ๋ถํ ๋ฌธ์ ๊ฐ ํ์ ํ๊ฒ ์ค์ด๋ ๋ค.
- ์ ์ฒด ํ์ด์ง๋ฅผ ๋ ๋๋ง ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ ๋์ ์ ์ ๊ฒฝํ์ ์ ๊ณตํ๋ค.
- ๋ํ์ ์ธ SPA ๋ฐฉ์์ผ๋ก ๋ง๋ค์ด์ง ์๋น์ค :
Youtube
,facebook
,Gmail
,aitbnb
,Nexflix
๋ฑ
๐ย SPA์ ๋จ์
- SPA์ ๊ฒฝ์ฐ JavaScript ํ์ผ์ ํฌ๊ธฐ๊ฐ ํฌ๋ค. ๋๋ฌธ์ ์ด JavaScript ํ์ผ์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ผ๋ก ์ธํด ์ฒซ ํ๋ฉด ๋ก๋ฉ ์๊ฐ์ด ๊ธธ์ด์ง๋ค.
- ๊ฒ์ ์์ง ์ต์ ํ(SEO)๊ฐ ์ข์ง ์๋ค. ๊ตฌ๊ธ์ด๋ ๋ค์ด๋ฒ ๊ฐ์ ๊ฒ์ ์์ง์ HTML ํ์ผ์ ์๋ ์๋ฃ๋ฅผ ๋ถ์ํ๋ ๋ฐฉ์์ผ๋ก ๊ฒ์ ๊ธฐ๋ฅ์ ๊ตฌ๋ํ๋๋ฐ, SPA์ ๊ฒฝ์ฐ HTML ํ์ผ์ ๋ณ๋ค๋ฅธ ์๋ฃ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์์ง์ด ์ ์ ํ ๋์ํ์ง ๋ชปํ๋ค.
โย ๊ฒ์ ์์ง์ ์๋ ๋ฐฉ์
๊ฒ์ ๋ก๋ด์ด ์น ํ์ด์ง์ ์๋ ์ ๋ณด๋ฅผ ์์งํ๊ณ ๋ถ์ํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด ๋ณด๊ดํ๊ณ ์๋ค๊ฐ, ์ฌ์ฉ์๊ฐ ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๋ณด๊ดํ๊ณ ์๋ ์ธ๋ฑ์ค์์ ๊ฒ์์ด์ ๊ฐ์ฅ ์ฐ๊ด์ฑ์ด ๋์ ์น ํ์ด์ง๋ค์ ์์๋๋ก ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.
๊ฒ์ ๋ก๋ด์ ์๋ฃ๋ฅผ ์์งํ ๋ ์น ํ์ด์ง์ URL, HTML ๋ฌธ์ ๋ด์ ๊ฐ์ข ํ๊ทธ๋ ๋งํฌ ๋ค์ ๋ถ์ํ๋๋ฐ, SPA๋ HTML์ด ๊ฑฐ์ ๋น์ด์๋ค ๋ณด๋ ๊ฒ์ ๋ก๋ด์ด ์ถฉ๋ถํ ์๋ฃ๋ฅผ ์์งํ์ง ๋ชปํ๋ค. ์ด ๋๋ฌธ์ ๊ฒ์ ์์ง ์ต์ ํ์ ๋ํ ๋์์ฑ ์ ๋ฐ๋ก ๋ง๋ จํด์ผ ํ๊ณ , ๋๋ถ์ ์ฑ ์์์ ๋ธ๋ผ์ฐ์ ์ ์์ผ๋ก ๊ฐ๊ธฐ/๋ค๋ก ๊ฐ๊ธฐ ๋ฑ์ ์ํ๋ ๊ด๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์ ๋ณต์ก๋๊ฐ ๋์ฑ ๋์ด๋๋ค. (๋ค๋ง, SPA์์๋ ๊ฒ์ ์์ง ์ต์ ํ์ ๋์ํ ์ ์๋๋ก ๊ฒ์ ์์ง์ด ๋ฐ์ ํ๊ณ ์์ด ์ด ๋จ์ ์ ์ ์ฐจ ์ฌ๋ผ์ง๊ณ ์๋ ์ถ์ธ์ด๋ค.)
๐ย Routing & React Router
๐ย Routing?
Twitter์ ๊ฐ์ SPA ํ์ด์ง๋ฅผ ๋ง๋ค ๋, ๋ฉ์ธ ํธ์ ๋ชจ์ ํ์ด์ง, ์๋ฆผ ํ์ด์ง, ๋ง์ด ํธ์ ํ์ด์ง ๋ฑ์ ํ๋ฉด์ด ํ์ํ ์ ์๋ค.
์ด ํ๋ฉด์ ๋ฐ๋ผ ์ฃผ์๋ ๋ฌ๋ผ์ง๊ฒ ๋๋๋ฐ, ์ด๋ ๊ฒ **๋ค๋ฅธ ์ฃผ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ณผ์ ์ โ๊ฒฝ๋ก์ ๋ฐ๋ผ ๋ณ๊ฒฝํ๋ค.โ๋ผ๋ ์๋ฏธ๋ก ๋ผ์ฐํ (Routing) ์ด๋ผ๊ณ ํ๋ค.
๐ย React Router
ํ์ง๋ง React ์์ฒด์๋ ์ด ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ง ์์ ์ฐ๋ฆฌ๊ฐ ์ง์ ์ฃผ์ ๋ง๋ค ๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์ฌ์ค์ผ ํ๋ค.
React SPA์์๋ ๋ผ์ฐํ ์ ์ํด React Router๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ค.
โถ๏ธย React Router ์ฃผ์ ์ปดํฌ๋ํธ
-
โ ๋ผ์ฐํฐ ์ญํ -
โ ๊ฒฝ๋ก ๋งค์นญ -
โ ๊ฒฝ๋ก ๋งค์นญ -
โ ๊ฒฝ๋ก ๋ณ๊ฒฝ
โถ๏ธย React Router ์ฌ์ฉ
npm install react-router-dom@ ^6.3.0
- App.js
import React from "react";
import {BrowserRouter, Routes, Route, Link} from "react-router-dom";
Leave a comment