๋ฐ˜์‘ํ˜•

๐Ÿ”ฐ  SPA๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์žฅ/๋‹จ์ ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

โœ… SPA(Single Page Application)๋ž€?

SPA๋Š” Single Page Application์˜ ์•ฝ์ž๋กœ ๋‹จ์ผ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งํ•œ๋‹ค.
Angular, Vue, React๊ฐ€ SPA๋ฅผ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด๋‹ค.

์ฆ‰, ๋ฆฌ์•กํŠธ๋Š” UI ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/ํ”„๋ ˆ์ž„์›Œํฌ๋กœ์จ SPA(Single Page Application)์˜ UI(User Interface)๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

 

โœ… ์žฅ/๋‹จ์ 

๐ŸŸข ์žฅ์ 

  • ํ•„์š”ํ•œ ๋ชจ๋“  ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์ฒ˜์Œ์— ํ•œ๋ฒˆ ๋‹ค์šด๋กœ๋“œ
  • ํŽ˜์ด์ง€ ๊ฐ„ ์ด๋™์‹œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ JSON์œผ๋กœ ์ „๋‹ฌ๋ฐ›์•„ ์ „์ฒด์ ์ธ ํŠธ๋ž˜ํ”ฝ ๊ฐ์†Œ ๋ฐ rendering์—์„œ ์ข‹์€ ํšจ์œจ์„ ๊ฐ€์ง
    → DOM ๊ด€๋ฆฌ์™€ ์ƒํƒœ๊ฐ’ ์—…๋ฐ์ดํŠธ ๊ด€๋ฆฌ ์ตœ์†Œํ™”
  • ์ƒˆ๋กœ๊ณ ์นจ์„ ์œ ๋ฐœํ•˜์ง€์•Š์•„ ๋”์šฑ ์พŒ์ ํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ถ€๋ถ„์ ์ธ rendering์œผ๋กœ ์ƒˆ๋กœ๊ณ ์นจ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„ ํ™”๋ฉด ๊นœ๋ฐ•์ž„ ์—†์ด ๋น ๋ฅธ ํ™”๋ฉด ์ด๋™ ๊ฐ€๋Šฅ
  • ๋ชจ๋“ˆํ™” ๋˜๋Š” component๋ณ„ ๊ฐœ๋ฐœ ์šฉ์ด
  • ๊ธฐ์กด์˜ SSR๊ณผ ๋น„๊ตํ•  ๋•Œ ๋ฐฐํฌ ๊ฐ„๋‹จ๋ฉฐ, ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ๊ณผ ๋น„์Šทํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ œ๊ณต

๐Ÿ”ด ๋‹จ์ 

  • ๋Š๋ฆฐ ์ดˆ๊ธฐ ๊ตฌ๋™ ์†๋„ - ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ resource๋ฅผ ํ•œ ๋ฒˆ์— ๋‹ค์šด๋กœ๋“œ
  • ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”(SEO)์— ๋ถ€์ ํ•ฉ
์ผ๋ฐ˜์ ์œผ๋กœ SPA๋Š”
 CSR(ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง, Client Side Rendering) ๋ฐฉ์‹
์œผ๋กœ ๋™์ž‘ํ•˜๋Š”๋ฐ, ์ด ๋ฐฉ์‹์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ๋ชจ๋ธ๋กœ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ๋ทฐ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ฒ˜์Œ ์ ‘์†ํ•˜๋ฉด ๋นˆ HTML์„ ๋ณด์—ฌ์ฃผ๊ณ , ์ดํ›„์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐ›๋Š” ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰์—”์ง„์—์„œ CSR๋กœ ์ž‘์„ฑ๋œ ์›นํŽ˜์ด์ง€ ๋ถ„์„์— ์–ด๋ ค์›€์ด ๋ฐœ์ƒํ•œ๋‹ค.
  • ์ฝ”๋“œ๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜๋Š” ๋ณด์•ˆ์ ์ธ ๋ฌธ์ œ - ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ

 

 

โœ… React with SPA

SPA๋Š” ์›น/์•ฑ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์ฒ˜์Œ์— ํ•œ๋ฒˆ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.

ํŽ˜์ด์ง€ ๊ฐ„ ์ด๋™ ์‹œ, ํŽ˜์ด์ง€ ๊ฐฑ์‹ ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ์„ JSON์œผ๋กœ ์ „๋‹ฌ๋ฐ›์•„ ํŽ˜์ด์ง€๋ฅผ ๊ฐฑ์‹ ํ•˜๋ฏ€๋กœ ์ „์ฒด์ ์ธ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ์†Œํ•  ์ˆ˜ ์žˆ๊ณ , ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ๋˜๋Š” ๋ถ€๋ถ„๋งŒ์„ ๊ฐฑ์‹ ํ•˜๋ฏ€๋กœ ์ƒˆ๋กœ๊ณ ์นจ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ๊ณผ ์œ ์‚ฌํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฆฌ์•กํŠธ๋Š” UI ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/ํ”„๋ ˆ์ž„์›Œํฌ๋กœ์จ SPA(Single Page Application)์˜ UI(User Interface)๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.
๋ฆฌ์•กํŠธ๋Š” JSX์ด๋ผ๋Š” ๋ฌธ๋ฒ•๊ณผ ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทผ๊ฐ„์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์ƒ ๋”(Virtual DOM)์ด๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํผํฌ๋จผ์Šค๋ฅผ ์ตœ์ ํ™”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•