๐ Single Page Application
๐ SPA๋ฅผ ์ฒด๊ฐํ๋ค.
ํํ๋ก์ ํธ๋ฅผ ํ์ฐธํ๋ ์๊ธฐ๋ก ๋ค์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ค. ๋ก๊ทธ์ธ ํ์ด์ง์ ํ์๊ฐ์ ํ์ด์ง๋ก ์ด๋ํ ์ ์๋ ์์ฃผ ๊ฐ๋จํ ๋ฒํผ? ์ ์ถ๊ฐ์ค ์ด์๋๋ฐ, ๋๋ js ์์ ํ๋ ๊ฒ ์ฒ๋ผ a ํ๊ทธ๋ฅผ ์ฌ์ฉํ ๋ ค๊ณ ํ์๋ค.
ํ์์์ ์ด๋ฏธ ์ ๊ณตํด์ค userMVP ๋ฅผ ์ดํด๋ณด๋ ์ค aํ๊ทธ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ํ์ด์ง๋ฅผ ์ด๋ํ ๋ navigate ํน์ Link ์ปดํฌ๋ํธ ๋ฅผ ์ฌ์ฉํ ๊ฒ์ ์๊ฒ ๋์๋ค. ํํ๋ก์ ํธ ๋น์์๋ ์๊ฐ์ ์ซ๊ธฐ๋ฏ์ด ๊ตฌํ์ ํ๊ณ ์์ด์, ์ ๋๋ก ๊ฐ๋ ๋ถํฐ ๊ณต๋ถํ์ง ๋ชปํ๊ณ , ์ผ๋จ ์ฌ์ฉ๋ฒ๋ง ์ตํ์ ์ฌ์ฉํ์๋ค.๐ญ
โ ๊ทธ๋ผ ์ a ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ง ์์๊น..? ๊ทธ๋ฅ react ๋ผ์..? ์๋๋ฉด ๋ค๋ฅธ ์ปดํฌ๋ํธ๊ฐ ํธํด์...?๐ฒ
์ด ๋ถ๋ถ์ ๋ํด ์ฐพ๋ค๋ณด๋, ๋ค์ ์ฒ์ react ํน์ง ์ค ํ๋์๋ Single Page Application ๊น์ง ๋ค์ ์ฝ์ด๋ณด๊ฒ ๋์๋ค.
์๋ฌดํผ ์๋ก ? ์ ์ฌ๊ธฐ๊น์งํ๊ณ ,,, ๊ทธ๋ผ ์ a ํ๊ทธ๋ฅผ ์ฐ์ง ์๋์ง, react-router ์ SPA ๊ฐ ๋ญ์ง, ๋๋ฆ๋๋ก ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค!
1๏ธโฃ React Router ๋?
๊ฐ์ฅ ๋จผ์ ๋ผ์ฐํ ๊ณผ ๋ผ์ฐํฐ๊ฐ ๋ฌด์์ธ์ง ์์๋ณด์. ๋จผ์ ๋ผ์ฐํฐ๋ ๊ธธ์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๋ ์ญํ , ๋ผ์ฐํ ์ ๊ธธ์ ์ฐพ๋ ํ์๋ผ๊ณ ๋ณดํต ์ด์ผ๊ธฐํ๋ค.
๐ก ์ ๊ธฐ์ต์ ๋์ง ์์ง๋ง....๋คํธ์ํฌ ๋ณด์..?..๊ณผ๋ชฉ์์ ์ด๋ ดํ์ด ๋ ์ค๋ฅด๋ ๊ต์๋์ ์ค๋ช ์ ์ ์ด๋ณด์๋ฉด..๋ง์ฝ ๋๊ตฌ์์ ์์ธ๋ก ๊ฐ๋ ค๊ณ ํ๋ค๋ฉด, ์ฌ๋ฌ๊ฐ์ง ๊ธธ์ด ์๋ค! ๊ทธ๋ผ ๋ค๋น๊ฒ์ด์ ์ด ๊ตฌ๊ฐ๋ง๋ค (ex. ๋๊ตฌ-๋์ , ๋์ -์์ธ) ์ด๋ค ๊ธธ๋ก ๊ฐ์ผ์ง ํธํ ์ง ๊ณ์ ์ฐพ์๋ด๋๋ฐ, ์ด๊ฒ์ ๋ผ์ฐํฐ๋ผ๊ณ ์ดํด๋ฅผ ํ๊ณ , ์ด๋ฌํ ํ์๋ฅผ ๋ผ์ฐํ ์ด๋ผ๊ณ ์ดํด๋ฅผ ํ๋ ๊ธฐ์ต์ด ์๋ค.
์น ์ดํ๋ฆฌ์ผ์ด์ ๊ด์ ์์ ๋ผ์ฐํ ์ ์ฌ์ฉ์๊ฐ ์์ฒญํ URL ์ ๋ฐ๋ผ ์๋ง์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด๋ค.
๋ฆฌ์กํธ์์ ๋ผ์ฐํ ์์คํ ์ ๊ตฌ์ถํ๊ธฐ ์ํด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๊ฐ React Router ์ด๋ค.
2๏ธโฃ Single Page Application (+ Multi Page Application) ?
SPA๋ฅผ ์ผ๋จ ํด์์ ํด๋ณด๋ฉด ํ๊ฐ์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์ดํ๋ฆฌ์ผ์ด์
์ด๋ผ๊ณ ํด์ํ ์ ์๋ค.
๋ฐ๋๋ก MPA ๋ ์ฌ๋ฌ๊ฐ์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์ดํ๋ฆฌ์ผ์ด์
์ด๋ค.
๊ทธ๋ผ ํ๊ฐ์ ํ์ด์ง๋ก ์ด๋ฃจ์ด์ก๋ค๋ ๊ฒ์ด ์ ๋ง ํ๊ฐ์ ํ์ด์ง๋ก๋ง ์ด๋ฃจ์ด์ก๋ค๋ ๊ฒ์ผ๊น...? ๊ทธ๋ผ React๋ก๋ ์ฌ์ดํธ๋ฅผ ๋ง๋ค ์๊ฐ ์๋ค. ๋ก๊ทธ์ธ ํ์ด์ง๋ง ์๋ ์ฌ์ดํธ๋ ์์ผ๋๊น.....๊ทธ๋ ๋ค๋ฉด React ๊ฐ ์ด๋ ๊ฒ ๋ง์ด ์ฐ์ด์ง ๋ชป ํ์ ๊ฒ์ด๋ค.
SPA ๋ฅผ ์ฝ๊ฒ ์ดํดํ๊ธฐ ์ํด์๋ MPA ๋ฐฉ์์ ๋จผ์ ์ดํดํ ํ์๊ฐ ์๋ค.
MPA ๋ ์ฌ์ฉ์๊ฐ ์๋ก์ด ํ์ด์ง๋ก ์ด๋ํ ๋๋ง๋ค ์๋ก์ด html ์ ๋ฐ์์จ๋ค. ๊ฐ ํ์ด์ง๋ง๋ค ๋ค๋ฅธ html ํ์ผ์ ์ฌ์ฉํ๋ค. ex. hompage.html, login.html, mypage.html ...
๋ง์ฝ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ์ด์ง๋ก ์ด๋ํ๊ธฐ ์ํด์๋, ์๋ก์ด ํ์ด์ง๋ฅผ ์น์๋ฒ๊ฐ ์์ฒญํ๊ฒ ๋๊ณ , ์์ฒญํ ํ์ด์ง๋ฅผ ๋ค์ ๋๋๋งํ๊ฒ ๋๋ค. (๊ทธ๋์ MPA ๋ก ์ด๋ฃจ์ด์ง ์น์ฌ์ดํธ๋ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ค์ด๊ฐ๋๋ง๋ค โญ๏ธ์๋ก๊ณ ์นจ์ด ๋๋ค!)
๊ทธ๋ผ SPA ๋ ๋ฌด์์ผ๊น? ์ผ๋จ ๋ง๊ทธ๋๋ก ํ๊ฐ์ ํ์ด์ง๋ก ์ด๋ฃจ์ก๋ค๊ณ ์ดํดํ ์ ์๋ค..๊ทธ๋ผ ์ ๋ง ํ์ด์ง ์ด๋์ ์๋ ๊ฒ์ผ๊น...? ๊ทธ๊ฑด ์๋๋ค. ์ฝ๊ฒ ์ด์ผ๊ธฐํ๋ฉด...homepage.html , login.html, mypage.html ์ด ๊ฐ๊ฐ ์๋ ๊ฒ์ด ์๋๋ผ, index.html ์ ๋ชจ๋ ๊ฒ์ด ๋ค์ด์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ์ด์ง๋ฅผ ์์ฒญํ์ฌ๋, ๋ง์ดํ์ด์ง๋ฅผ ์์ฒญํ์ฌ๋ , ์น์๋ฒ๋ index.html ์ ๋ฐํํ๊ณ , ํ์ํ ์ ๋ณด๋ง ๋ฐ์์ ๊ทธ ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ฐ์ดํธ ๋๋ค. (์ ๋ฐ์ดํธ๋ง ๋๊ธฐ๋๋ฌธ์, ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ๋์ง์๋๋ค!) ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ธฐ์ ์ ์ผ๋ก๋ ํ๊ฐ์ ํ์ด์ง๊ฐ ์กด์ฌํ์ง๋ง, ์ฌ์ฉ์๊ฐ ๋๋ผ๊ธฐ์๋ ์ฌ๋ฌ๊ฐ์ ํ์ด์ง๊ฐ ์๋ค๊ณ ๋๋ผ๋ ๊ฒ์ด๋ค.๐
3๏ธโฃ a ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ ์ด์ !
๊ทธ๋ผ ์ react์์๋ aํ๊ทธ๋ฅผ ์ฌ์ฉํ์ง ์์๊น...?
์ฌ์ค ์์์ ๋ค ์ค๋ช
์ด ๋์๋๋ฐ, SPA ๋ฐฉ์์ ๋ง์ง ์๋ค๋ ๊ฒ์ด๋ค. SPA ๋ฐฉ์์ ์ฅ์ ์ค ํ๋๊ฐ ์๋ก๊ณ ์นจ์ด ๋์ง์๋๋ค๋ ๊ฒ์ธ๋ฐ, aํ๊ทธ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ๋ค์ ์๋ก๊ณ ์นจ์ด ๋๊ธฐ๋๋ฌธ์, ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์๊ณ , Link ์ปดํฌ๋ํธ, navigate ์ปดํฌ๋ํธ์ ์ฌ์ฉ์ ๊ถ์ฅํ๋ค๊ณ ํ๋ค!
SPA, MPA ์ ๋ฐ์ ํ ๊ด๋ จ์๋ SSR, CSR, SEO์ ๊ดํ WIL์ ์์ฑํ์์ต๋๋ค. (2022.4.14) ๐
2022.08.10 - [๐ WIL/๐ React] - SSR ๊ณผ CSR, ๊ทธ๋ฆฌ๊ณ SEO
TIL ์ ์ ์ฐ๊ณ ์ถ์๋ฐ, ์๊ฐ์ฒ๋ผ ๋์ง ์๋ ๊ฒ ๊ฐ๋ค. ๊ฐ๋จํ ์์ฑํ๊ณ ์ ์์ํ ๊ธ๋ ๊ฐ๋ ์ ์ฐพ๊ณ ๊ณต๋ถํ๋ค ๋ณด๋ฉด, ๊ฐ๋จ๋ช ๋ฃํ ๊ธ์ด ์๋ ๊ฒ ๊ฐ์์ ์์ฝ๋ค... ํ์ง๋ง ์ด ๋ถ๋ถ์ ๋ด๊ฐ ์์ง ๋ชจ๋ฅด๋ ๊ฒ์ด ๋ง๊ธฐ์, ํ ๊ฐ๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ์คํ๋์ฒ๋ผ ๋ชจ๋ฅด๋ ๊ฐ๋ ๋ค์ด ์ฝํ์ ๋์ค๊ฒ ๋์ด ๊ทธ๋ฐ ๊ฒ ๊ฐ์์, ์ด ๋ถ๋ถ์ ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ฉด, ์ ์ ์๋ ๊ฒ์ด ๋ง์์ง๊ณ ๊ทธ๋ผ ์ ์ ๊ฐ๋จ ๋ช ๋ฃํ ๊ธ์ด ๋์ง ์์๊น..์๊ฐํ๋ ๋์ ๋ฐ๋์ด๋ค.๐ ์ด๋ฒ์ ํ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ธฐ๋ก์ ์ค์์ฑ์ ์๊ฒ ๋ ๋งํผ, ์๊ฐ์ด ์กฐ๊ธ ๊ฑธ๋ฆฌ๋๋ผ๋ ๊พธ์คํ ๊ธฐ๋กํ์!
'๐ WIL > ๐ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ก Spread Syntax๋ฅผ ์ ์ฌ์ฉํ ๊น..? (0) | 2022.08.10 |
---|---|
SSR ๊ณผ CSR, ๊ทธ๋ฆฌ๊ณ SEO (0) | 2022.08.10 |
Recoil (0) | 2022.08.09 |
์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์ด๋ ? (0) | 2022.08.09 |
React (0) | 2022.08.09 |