๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ—‚ WIL/๐Ÿ“ React

Single Page Application

by nalong 2022. 8. 10.
๐Ÿ“… ๋ณธ ๊ธ€์€ 2022๋…„ 4์›” 2์ผ ๊ฐœ์ธ github์— ์ž‘์„ฑ๋œ ๊ธ€์ž…๋‹ˆ๋‹ค.

๐Ÿš€  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