๐Ÿธminzzi
Minzzi์•ผ
๐Ÿธminzzi
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (132)
    • ์˜ค๋ฅ˜ํ•ด๊ฒฐ (14)
    • FE (36)
      • Next.js (17)
      • React (4)
      • React Native (0)
      • TypeScript (1)
      • JavaScript (14)
    • BE (0)
      • Nest.js (0)
    • ๋ฐ๋ธŒ์ฝ”์Šค (7)
    • ์›น ํ”„๋กœ์ ํŠธ (5)
    • CS (28)
      • Algorithm (5)
      • Python (4)
      • C++ (2)
      • Operating System (4)
      • Computer Networking (3)
      • Data Structure (1)
      • Machine Learning (3)
      • Tip (6)
    • Github (4)
    • Flutter (3)
      • ํ”„๋กœ์ ํŠธ (3)
    • Private (3)
      • ํšŒ๊ณ  (7)
      • ๋ฉด์ ‘ (17)
    • ๊ฐœ๋ฐœ๋„์„œ (7)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์ด๋ฒคํŠธ๋ฃจํ”„
  • ์›์‹œํƒ€์ž…
  • ๋ชจ๋˜๋ฆฌ์•กํŠธ๋”ฅ๋‹ค์ด๋ธŒ
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • ๋ ‰์‹œ์ปฌ
  • SSR
  • reflow
  • ์ฝœ์Šคํƒ
  • ๋ฉด์ ‘
  • react
  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • ํž™์˜์—ญ
  • layout shift
  • ์‹คํ–‰์ปจํ…์ŠคํŠธ
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
  • ํ˜ธ์ด์ŠคํŒ…
  • ์‹คํ–‰์ปจํƒ์ŠคํŠธ
  • ์ด๋ฏธ์ง€ ์ตœ์ ํ™”
  • ์˜ค๋ธ”์™„
  • next.js

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๐Ÿธminzzi

Minzzi์•ผ

Private/๋ฉด์ ‘

ํ”„๋ก ํŠธ์—”๋“œ ๋ฉด์ ‘ ๋ชจ์•„๋ณด๊ธฐ1

2024. 11. 27. 22:05

1. Sync, Async์˜ ์ฐจ์ด์ (๋™๊ธฐ, ๋น„๋™๊ธฐ์˜ ์ฐจ์ด์ )์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

Sync๋Š” ์ž‘์—… ์š”์ฒญ์ด ์ด๋ค„์ง€๊ณ , ์š”์ฒญ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Async๋Š” ํŠน์ •ํ•œ ์š”์ฒญ์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€์Šค๋ ˆ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ๋œ ์ž‘์—…์„ ํ•˜๋‚˜์”ฉ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ setTimeout์ด๋‚˜ fetch๊ณผ ๊ฐ™์€ Web API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š”๋ฐ์š”, ๋Œ€ํ‘œ์ ์œผ๋กœ ๊ตฌ๊ธ€์˜ V8์—”์ง„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋ฉ”๋ชจ๋ฆฌํž™๊ณผ ์ฝœ์Šคํƒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํž™์€ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์ฝœ์Šคํƒ์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์ฝ์œผ๋ฉด์„œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…๋“ค์ด ์Œ“์ด๊ณ , ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋ฉด ์ฝœ์Šคํƒ์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€์Šค๋ ˆ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Web API๋ฅผ ์ด์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ์ฝœ์Šคํƒ์—์„œ ์‹คํ–‰๋œ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋Š” Web API๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , Web API๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ Task Queue(Callback Queue)์— ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ Loop๋ฅผ ํ†ตํ•ด ์ฝœ์Šคํƒ๊ณผ ํƒœ์Šคํฌํ๋ฅผ ํ™•์ธํ•˜์—ฌ ์ฝœ์Šคํƒ์— ์žˆ๋Š” ์ž‘์—…์„ ์šฐ์„ ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ดํ›„, ํƒœ์Šคํฌํ์— ์žˆ๋Š” ์ž‘์—…์„ ์ฝœ์Šคํƒ์— ๋„ฃ์–ด ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

3. ํด๋กœ์ €์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํด๋กœ์ €๋Š” ์„ ์–ธ๋์„๋•Œ ๊ทธ๋•Œ์˜ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“  ํ•จ์ˆ˜๋“ค์„ Environment๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง€๋Š”๋ฐ ์—ฌ๊ธฐ์— ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

4. ํด๋กœ์ €์˜ ๋‹จ์ ๊ณผ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํด๋กœ์ €๋Š” ์™ธ๋ถ€ํ™˜๊ฒฝ์˜ ๋ณ€์ˆ˜๋ฅผ ๊ณ„์† ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋น„์ง€์ปฌ๋ž™ํ„ฐ์˜ ๋Œ€์ƒ์ด ๋˜์ง€ ์•Š์•„ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ null์„ ํ• ๋‹นํ•ด์คŒ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. reflow์™€ repaint์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

reflow์™€ repaint๋Š” ๋ชจ๋‘ ๋ Œ๋”๋ง๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ™”๋ฉด์ด ๋ฆฌ๋žœ๋”๋ง ๋์„ ๋•Œ, ๊ฐ ์ƒํ™ฉ์— ๋”ฐ๋ผ reflow์™€ repaint๊ฐ€ ์ผ์–ด๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. reflow๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŽ˜์ด์ง€์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•˜๊ณ  repaint๋Š” ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ™”๋ฉด์— ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

 

reflow๋Š” DOM์˜ ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์š”์†Œ์˜ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. repaint๋Š” ๋ ˆ์ด์•„์›ƒ์€ ๊ทธ๋Œ€๋กœ์ด๊ณ  ์ƒ‰์ƒ์ด๋‚˜ ๋ฐฐ๊ฒฝ ๋“ฑ์˜ ์Šคํƒ€์ผ๋งŒ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ๋ ˆ์ด์•„์›ƒ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” reflow๊ฐ€ ์ผ์–ด๋‚˜๋ฉด repaint๊ฐ€ ํ•„์—ฐ์ ์œผ๋กœ ์ผ์–ด๋‚˜๊ธฐ๋„ ํ•˜๊ณ , reflow๋Š” ๋น„์šฉ์ด ๋” ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ์ด์•„์›ƒ ๊ณ„์‚ฐ์ด ๋‹ค์‹œ ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. 

6. reflow๊ฐ€ ๋‹ค์‹œ ์ผ์–ด๋‚˜์ง€ ์•Š๊ฒŒ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋‚˜์š”?

reflow๋ฅผ ์œ ๋ฐœํ•˜๋Š” CSS ์†์„ฑ ์‚ฌ์šฉ์„ ์ตœ์†Œํ™”ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. width, height, margin, padding, border ๋“ฑ์˜ ์†์„ฑ์€ ์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๊ฒŒ ํ•˜๊ธฐ๋•Œ๋ฌธ์— reflow๋ฅผ ์ผ์œผํ‚ต๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ํ•ด๋‹น ์†์„ฑ ๊ฐ’์„ ์„ค์ •ํ•ด ์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ์—๋งŒ ๊ณ„์‚ฐ์ด ์ด๋ฃจ์–ด์ง€๋„๋ก ํ•˜๊ณ , ์ดํ›„์—๋Š” ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

7. ์‹คํ–‰์ปจํ…์ŠคํŠธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์‹คํ–‰์ปจํ…์ŠคํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜์™€ ๊ฐ™์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ๊ทธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ์˜ ํ™˜๊ฒฝ์„ ์ •์˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰์ปจํ…์ŠคํŠธ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰์ปจํ…์ŠคํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ฒ˜์Œ ์‹คํ–‰๋  ๋•Œ ์ „์—ญ์œผ๋กœ ๋จผ์ € ์ƒ์„ฑ๋˜๊ณ , ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์—ญ์‹œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ƒ์„ฑ๋  ๋•Œ ์ฝœ์Šคํƒ์— ์Œ“์ด๊ฒŒ๋˜๋ฉฐ ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

8. ์‹คํ–‰์ปจํ…์ŠคํŠธ๋Š” ์–ด๋–ค ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‚˜์š”?

์‹คํ–‰์ปจํ…์ŠคํŠธ๋Š” ๋ณ€์ˆ˜ ๊ฐ์ฒด์™€ ์Šค์ฝ”ํ”„์ฒด์ธ, this ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ๋ณ€์ˆ˜ ๊ฐ์ฒด๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์˜ ์„ ์–ธ์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.

์Šค์ฝ”ํ”„ ์ฒด์ธ์€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…์ŠคํŠธ์™€ ์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์˜ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ํ˜„์žฌ ์‹คํ–‰์ปจํ…์ŠคํŠธ์—์„œ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ์Šค์ฝ”ํ”„ ์ฒด์ธ์„ ํ†ตํ•ด ์™ธ๋ถ€ ํ™˜๊ฒฝ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋งˆ์ง€๋ง‰์œผ๋กœ this๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ๋”ฐ๋ผ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. 

์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ํ†ตํ•ด ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ์˜ ํ™˜๊ฒฝ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ณ€์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„๋‚˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์˜ ๋งฅ๋ฝ์„ ๊ฒฐ์ • ์ง€์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

9. ์ด๋ฏธ์ง€ ์ตœ์ ํ™” ๊ฒฝํ—˜์ด ์žˆ๋˜๋ฐ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋˜์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.(๊ฐœ์ธ์งˆ๋ฌธ)

์˜จ๋ผ์ธ ์กธ์—…์ „์‹œ ์‚ฌ์ดํŠธ๋ฅผ ์šด์˜ํ•˜๋ฉฐ ์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. 20MB์ด์ƒ์˜ ์šฉ๋Ÿ‰์ด ํฐ ์ด๋ฏธ์ง€๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋˜ ์กธ์—…์ž‘ํ’ˆ ์‚ฌ์ดํŠธ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธด ๋กœ๋”ฉ์—†์ด ๋น ๋ฅด๊ฒŒ ์ž‘ํ’ˆ์„ ๊ฐ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๋จผ์ € ํŒŒ์ผ ํฌ๋งท์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. webp ํฌ๋งท์„ ์‚ฌ์šฉํ•˜์—ฌ ์šฉ๋Ÿ‰์„ ๊ฐœ์„ ํ–ˆ๋Š”๋ฐ์š”, webp ํฌ๋งท์€ ๊ตฌ๊ธ€์—์„œ ๋ฐœํ‘œํ•œ ํฌ๋งท์œผ๋กœ ์••์ถ• ํšจ๊ณผ๊ฐ€ ์ข‹์•„ ๋งŽ์€ ์šฉ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— png ํฌ๋งท์—์„œ webp๋กœ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ png ํฌ๋งท์ผ๋•Œ๋ณด๋‹ค 31%์˜ ์šฉ๋Ÿ‰ ๊ฐœ์„ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 

 

๋‘๋ฒˆ์งธ๋กœ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์‹ค์ œ ์›น์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค 1.5๋ฐฐ์ •๋„ ํฐ ์‚ฌ์ด์ฆˆ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์–ด์„œ ์›นํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ตœ๋Œ€ ์‚ฌ์ด์ฆˆ์˜ ์ด๋ฏธ์ง€๋กœ ๋งž์ถ”์–ด ์ œ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€์ ์ธ ์šฉ๋Ÿ‰ ๊ฐœ์„ ์„ ์ด๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ AWS cloudfront์—์„œ ์ œ๊ณตํ•˜๋Š” CDN ๊ธฐ์ˆ ์„ ์ด์šฉํ•˜์—ฌ ์—ฃ์ง€ ์Šคํ…Œ์ด์…˜์— ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ์บ์‹ฑํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์บ์‹ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ๋กœ๋”ฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

10. ์ด๋ฒคํŠธ๋ฃจํ”„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ค‘์š”ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ž‘์—…๋“ค์€ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌ๋˜๊ณ , ์ฝœ์Šคํƒ์— ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ๋“ค์ด ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ fetch๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ฑฐ๋‚˜ setTimeout ํ•จ์ˆ˜ ๋“ฑ์˜ Web API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝœ์Šคํƒ์— ๋น„๋™๊ธฐ ์ž‘์—…์ด ์‹คํ–‰๋˜๋ฉด ๋น„๋™๊ธฐํ•จ์ˆ˜๋Š” Wep API๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  Web API๋Š” Callback Queue๋ผ๊ณ ๋„ ํ•˜๋Š” Task Queue์— ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ์ฝœ์Šคํƒ๊ณผ ํƒœ์Šคํฌํ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ์ฝœ์Šคํƒ์— ์žˆ๋Š” ์ž‘์—…์„ ์šฐ์„ ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ฝœ์Šคํƒ์ด ๋น„์›Œ์ง€๋ฉด ํƒœ์Šคํฌํ์— ์žˆ๋Š” ์ž‘์—…์„ ์ฝœ์Šคํƒ์— ๋„ฃ์–ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

11. ์•ž์„œ ๋ง์”€ํ•˜์‹  ํƒœ์Šคํฌ ํ์˜ ์ข…๋ฅ˜์—๋Š” ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

ํƒœ์Šคํฌ ํ๋Š” ๋งคํฌ๋กœ ํƒœ์Šคํฌ ํ์™€ ๋งˆ์ดํฌ๋กœ ํƒœ์Šคํฌ ํ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๋งคํฌ๋กœ ํƒœ์Šคํฌ ํ๋Š” setTimeout, setInterval ๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ๋น„๋™๊ธฐ ์ž‘์—…๋“ค์ด ๋Œ€๊ธฐํ•˜๋Š” ํ์ž…๋‹ˆ๋‹ค. ๋งคํฌ๋กœ ํƒœ์Šคํฌ ํ๋Š” ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ์ฝœ์Šคํƒ๊ณผ ๋งˆ์ดํฌ๋กœ ํƒœ์Šคํฌ ํ์˜ ์ž‘์—…์„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•œ ํ›„ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ ํƒœ์Šคํฌ ํ๋Š” Promise.then()๊ณผ ๊ฐ™์ด ๋†’์€ ์ค‘์š”๋„์˜ ์ž‘์—…๋“ค์ด ๋Œ€๊ธฐํ•˜๋Š” ํ์ž…๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ ํƒœ์Šคํฌ ํ๋Š” ๋งคํฌ๋กœ ํƒœ์Šคํฌ ํ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์œผ๋ฉฐ ์ฝœ์Šคํƒ์ด ๋น„์›Œ์ ธ์žˆ์œผ๋ฉด ๋งˆ์ดํฌ๋กœ ํƒœ์Šคํฌ ํ์˜ ์ž‘์—…๋“ค์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

์ •๋ฆฌํ•˜๋ฉด, ํƒœ์Šคํฌํ๋Š” ๋งคํฌ๋กœ ํƒœ์Šคํฌ ํ์™€ ๋งˆ์ดํฌ๋กœ ํƒœ์Šคํฌ ํ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๋งˆ์ดํฌ๋กœ ํƒœ์Šคํฌ ํ์— ์žˆ๋Š” ์ž‘์—…๋“ค์ด๊ฐ€ ๋งคํฌ๋กœ ํƒœ์Šคํฌ ํ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„ ๋จผ์ € ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

12. ๋ฆฌ์•กํŠธ์˜ props์™€ state์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

props๋Š” ๋ถ€๋ชจ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ž์‹์ปดํฌ๋„ŒํŠธ์—์„œ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ๋ฐ์ดํ„ฐ ํ๋ฆ„์˜ ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๊ธฐ๋•Œ๋ฌธ์— ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

state๋Š” ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋กœ setState๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ’์ด ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ๋ฆฌ๋žœ๋”๋ง์ด ์ด๋ฃจ์–ด ์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ state๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ฆฌ๋žœ๋”๋ง์„ ํ†ตํ•ด UI๊ฐ€ ์—…๋ฐ์ดํŠธ ๋ฉ๋‹ˆ๋‹ค.

13. HTTP ํ†ต์‹ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

HTTP๋Š” HyperText transfer protocol๋กœ ์›น์—์„œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์— ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ์›นํŽ˜์ด์ง€๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์š”์ฒญ๋ฐ›์€ ์›นํŽ˜์ด์ง€๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

14. HTTP์˜ stateless์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

HTTP ํ†ต์‹ ์€ stateless์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. stateless๋Š” ์ด์ „ ์š”์ฒญ์˜ ๊ฒฐ๊ณผ, ์ฆ‰ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์š”์ฒญ์€ ๋…๋ฆฝ์ ์ธ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

15. HTTP ํ”„๋กœํ† ์ฝœ์˜ request์™€ response ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

HTTP request๋ฅผ ๋ณด๋‚ผ๋•Œ๋Š” ๊ตฌ์กฐ์— ๋งž๊ฒŒ ๋ณด๋‚ด์•ผ ํ•˜๋Š”๋ฐ, ๋จผ์ € start line์— http method๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. get, post, delete ๋“ฑ ์–ด๋–ค ์š”์ฒญ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  header์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด ์š”์ฒญ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. body์—๋Š” ์š”์ฒญ์‹œ ๋“ค์–ด๊ฐˆ ์ˆ˜๋„ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. response์—๋Š” ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ๋„˜์–ด์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 200ok๋‚˜ 400error ๋“ฑ์ด ๋‹ด๊ฒจ์ ธ์žˆ๊ณ , header์—๋Š” ์—ญ์‹œ ์‘๋‹ต์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค. body์—๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค.

16. ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›นํŽ˜์ด์ง€๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์น˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ด ๊ณผ์ •์„ 5๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ  ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ DOMํŠธ๋ฆฌ ์ƒ์„ฑ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” HTMLํŒŒ์ผ์—์„œ ๋ฐ›์œผ๋ฉด ์ด ํŒŒ์ผ์„ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ฝ๊ณ  ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ ํ•œ ๋’ค HTMLํ† ํฐ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ํ† ํฐ์„ ์ด์šฉํ•˜์—ฌ DOMํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ DOM์ƒ์„ฑ CSS ํŒŒ์ผ์„ ํŒŒ์‹ฑํ•˜์—ฌ CSSOM ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ๋กœ DOM๊ณผ CSSOMํŠธ๋ฆฌ๊ฐ€ ๋‹ค ์ƒ์„ฑ๋˜๋ฉด ์ด๋ฅผ ๊ฒฐํ•ฉํ•ด ๋ Œํ„ฐ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ Œ๋” ํŠธ๋ฆฌ์—๋Š” ์‹ค์ œ๋กœ ํ™”๋ฉด์— ํ‘œ์‹œ๋  ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ๋กœ ๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ๊ฐ ์š”์†Œ์˜ ์ •ํ™•ํ•œ ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ํŽ˜์ธํŒ… ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๋ ˆ์ด์•„์›ƒ์ด ์™„๋ฃŒ๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ฐ ์š”์†Œ๋ฅผ ์‹ค์ œ๋กœ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค.
๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์€ ์ด๋ ‡๊ฒŒ 5๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

17. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ES6์—์„œ ํด๋ž˜์Šค๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํŠน์ • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ์ผ์ข…์˜ ํ‹€๋กœ, ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ์ƒํƒœ(๋ฉค๋ฒ„ ๋ณ€์ˆ˜)์™€ ๋ฉ”์„œ๋“œ(ํ•จ์ˆ˜)๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ES6์—์„œ ํด๋ž˜์Šค๋Š” ํ•จ์ˆ˜์˜ ํ•œ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ํ•จ์ˆ˜์™€ ๋™์ผํ•˜๊ฒŒ ํด๋ž˜์Šค ์„ ์–ธ(Class declarations)๊ณผ ํด๋ž˜์Šค ํ‘œํ˜„(Class expressions)์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

18. hydrate๋ž€ ๋ฌด์—‡์ธ์ง€์™€ render์™€์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

hydrateํ•จ์ˆ˜๋Š” ์ƒ์„ฑ๋œ HTML ์ฝ˜ํ…์ธ ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ๋ถ™์ด๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
render์™€์˜ ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. hydrate๋Š” ์ด๋ฏธ ๋ Œ๋”๋ง๋œ HTML์ด ์žˆ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ์ด ๋ Œ๋”๋ง๋œ HTML์„ ๊ธฐ์ค€์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋ถ™์ด๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ render๋Š” ๋นˆ HTML์— ์ •๋ณด๋ฅผ ์š”์†Œ๋“ค์„ ๋ Œ๋”๋งํ•˜๋ฉฐ ์—ฌ๊ธฐ์— ์ด๋ฒคํŠธ๋ฅผ ๋ถ™์ด๋Š” ์ž‘์—…๊นŒ์ง€ ๋ชจ๋‘ ํ•œ ๋ฒˆ์— ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

19. ๋ฆฌ์•กํŠธ์˜ render phase์™€ commit phase์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋ฆฌ์•กํŠธ์˜ ๋žœ๋”๋ง ๊ณผ์ •์€ render phase๊ณผ commit phase๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
render phase์—์„œ๋Š” DOM์— ๊ทธ๋ ค์งˆ ์š”์†Œ๋“ค์„ ํŒŒ์•…ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์žฌ์กฐ์ • ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์žฌ์กฐ์ • ๊ณผ์ •์—์„œ ์ด์ „์— ์ƒ์„ฑํ•œ ๊ฐ€์ƒ DOM ํŠธ๋ฆฌ์™€ ์ƒˆ๋กœ ๋งŒ๋“  ๊ฐ€์ƒ DOM ํŠธ๋ฆฌ๋ฅผ ๋น„๊ตํ•ด์„œ ์‹ค์ œ DOM ํŠธ๋ฆฌ์— ๋ฐ˜์˜ํ•  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒํƒœ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ˜ธ์ถœํ•ด ์ƒˆ๋กœ์šด ๊ฐ€์ƒ DOMํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
๋‹ค์Œ์œผ๋กœ commit phase์—์„œ๋Š” render phase์—์„œ ์ง„ํ–‰ํ•œ ๋‘ ๊ฐ€์ƒ DOMํŠธ๋ฆฌ์˜ ๋ณ€ํ™”๋ฅผ ์‹ค์ œ DOM์— ์ ์šฉํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.
์š”์•ฝํ•ด์„œ render phase๋Š” ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•˜๋Š” ๋‹จ๊ณ„์ด๊ณ , commit phase๋Š” ๋ณ€๊ฒ…๋œ ์‚ฌํ•ญ์„ ์‹ค์ œ DOM์— ์ ์šฉํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

20. <script scr=“”></script>์ฝ”๋“œ๋Š” <head>ํƒœ๊ทธ์™€ <body>ํƒœ๊ทธ ์ค‘์— ์–ด๋””์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์ข‹์€ ๊ฒƒ ๊ฐ™์€์ง€ ๋ณธ์ธ์˜ ์ƒ๊ฐ์„ ๋งํ•ด์ฃผ์„ธ์š”.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ํฌ๊ธฐ์™€ ์‚ฌ์šฉ์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ ํŒŒ์ผ์˜ ํฌ๊ธฐ์™€ ์‚ฌ์šฉ์„ฑ์ด ๋น„์Šทํ•˜๋‹ค๋ฉด <body>ํƒœ๊ทธ ์ œ์ผ ํ•˜๋‹จ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ Œ๋”๋ง ์—”์ง„์€ HTML์„ ์ฝ์–ด DOM์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ์ค‘ script ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ ํŒŒ์‹ฑ ์ œ์–ด๊ถŒ์ด ๋ Œ๋”๋ง ์—”์ง„์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์œผ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (์ด๋ฅผ blocking์ด ์ผ์–ด๋‚ฌ๋‹ค๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค) ์ดํ›„์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์‹ฑ๊ณผ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ ๋ Œ๋”๋ง ์—”์ง„์œผ๋กœ ์ œ์–ด๊ถŒ์ด ๋„˜์–ด๊ฐ€ HTML ํŒŒ์‹ฑ์ด ์ค‘๋‹จ๋œ ์‹œ์ ๋ถ€ํ„ฐ ๋‹ค์‹œ DOM ์ƒ์„ฑ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ <script scr=“”></script>์ฝ”๋“œ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์œ„์—์„œ ์•„๋ž˜๋กœ ๋™๊ธฐ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋˜ ํŒŒ์‹ฑ์ด ์ค‘๋‹จ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ  ๋ธ”๋กœํ‚น๋˜๋Š” ๊ฒƒ์€ DOM ์ƒ์„ฑ์„ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ script ๋‚ด๋ถ€์—์„œ ํŠน์ • ์š”์†Œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์•„์ง HTML ์š”์†Œ๊ฐ€ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

21. ํž™์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํž™์€ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์— ์‚ฌ์šฉ๋˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ํž™์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ด ๋๋‚œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ช…์‹œ์ ์œผ๋กœ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

22. CI/CD์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

"์ง€์†์ ์ธ ํ†ตํ•ฉ/์ง€์†์ ์ธ ์„œ๋น„์Šค ์ œ๊ณต ๋˜๋Š” ๋ฐฐํฌ CI(Continuous Integration)/CD(Continuous Delivery, Continuous Deployment)"์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. `์ง€์†์ ์ธ ํ†ตํ•ฉ(CI)`์€ ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ •๊ธฐ์ ์œผ๋กœ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณ ๊ณต์œ  ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ˜‘์—…์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” conflict๋ฅผ ์ˆ˜์‹œ๋กœ ํ™•์ธํ•˜๊ณ  ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ƒˆ๋กœ์šด ์—…๋ฐ์ดํŠธ์˜ ํ…Œ์ŠคํŠธ์™€ ์ถœ์‹œ ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `์ง€์†์ ์ธ ์„œ๋น„์Šค ์ œ๊ณต ๋˜๋Š” ๋ฐฐํฌ(CD)`๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž production ํ™˜๊ฒฝ๊นŒ์ง€ release ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

23. useEffect ์‚ฌ์šฉ ์‹œ ์˜์กด์„ฑ ๋ฐฐ์—ด์— ๋นˆ ๋ฐฐ์—ด์„ ๋„ฃ๋Š” ๊ฒƒ์„ ์ง€์–‘ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

useEffect๋Š” ์˜์กด์„ฑ ๋ฐฐ์—ด๋กœ ์ „๋‹ฌํ•œ ๊ฐ’์˜ ๋ณ€๊ฒฝ์— ์˜ํ•ด ์‹คํ–‰๋˜์•ผ ํ•˜๋Š” ํ›…์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜์กด์„ฑ ๋ฐฐ์—ด์— ๊ฐ’์„ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ ์ตœ์ดˆ ๋ Œ๋”๋ง ๋•Œ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค๋ฉด ์ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ถ€์ˆ˜ ํšจ๊ณผ๊ฐ€ ์‹ค์ œ๋กœ ๊ด€์ฐฐํ•ด์„œ ์‹คํ–‰๋ผ์•ผ ํ•˜๋Š” ๊ฐ’๊ณผ๋Š” ๋ณ„๊ฐœ๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋นˆ ๋ฐฐ์—ด์„ ๋„ฃ๋Š” ๊ฒƒ์€ useEffect ํ›…์˜ ์ทจ์ง€์™€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

24. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐฐ์—ด์€ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๊ฐ’์„ ํ•˜๋‚˜์˜ ์ž๋ฃŒ๊ตฌ์กฐ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์€ ๋™์  ๋ฐฐ์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ง€์ •ํ•ด ๋†“์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ, ์š”์†Œ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์กฐ์ ˆ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฐฐ์—ด์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด, ๋ฐฐ์—ด ์š”์†Œ๋“ค์€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์—ฐ์†์ ์ด์ง€ ์•Š์•„๋„ ๋˜๊ณ , ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚ด์žฅ๋œ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์‰ฝ๊ฒŒ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด reduce, map ๋“ฑ์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ •๋ฆฌํ•˜๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์€ ๋™์  ๋ฐฐ์—ด๋กœ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ๋•Œ ๋ฐฐ์—ด ํฌ๊ธฐ๊ฐ€ ์ž๋™์ ์œผ๋กœ ์กฐ์ •๋˜๋ฉฐ, ์—ฌ๋Ÿฌ ๋‚ด์žฅ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด์„ ์‰ฝ๊ฒŒ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ

์ฐธ์กฐ

https://www.maeil-mail.kr

 

๋งค์ผ๋ฉ”์ผ - ๊ธฐ์ˆ  ๋ฉด์ ‘ ์งˆ๋ฌธ ๊ตฌ๋… ์„œ๋น„์Šค

๊ธฐ์ˆ  ๋ฉด์ ‘ ์งˆ๋ฌธ์„ ๋งค์ผ๋งค์ผ ๋ฉ”์ผ๋กœ ๋ณด๋‚ด๋“œ๋ฆด๊ฒŒ์š”!

www.maeil-mail.kr

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Private > ๋ฉด์ ‘' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ”„๋ก ํŠธ์—”๋“œ ๋ฉด์ ‘(๋ฐฐ์—ด)  (0) 2024.11.26
ํ”„๋ก ํŠธ์—”๋“œ ๋ฉด์ ‘(์˜์กด์„ฑ๋ฐฐ์—ด)  (0) 2024.11.25
ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ˆ  ๋ฉด์ ‘(heap, CI/CD)  (0) 2024.11.24
ํ”„๋ก ํŠธ์—”๋“œ ๋ฉด์ ‘(script ์ฝ”๋“œ์˜ ์œ„์น˜)  (0) 2024.11.23
ํ”„๋ก ํŠธ์—”๋“œ ๋ฉด์ ‘(render, commit๋‹จ๊ณ„)  (0) 2024.11.22
    'Private/๋ฉด์ ‘' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ํ”„๋ก ํŠธ์—”๋“œ ๋ฉด์ ‘(๋ฐฐ์—ด)
    • ํ”„๋ก ํŠธ์—”๋“œ ๋ฉด์ ‘(์˜์กด์„ฑ๋ฐฐ์—ด)
    • ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ˆ  ๋ฉด์ ‘(heap, CI/CD)
    • ํ”„๋ก ํŠธ์—”๋“œ ๋ฉด์ ‘(script ์ฝ”๋“œ์˜ ์œ„์น˜)
    ๐Ÿธminzzi
    ๐Ÿธminzzi

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”