2024-04-17.md

๐Ÿก

DIL: ๋ชจ๋˜ ๋ฆฌ์•กํŠธ ๋”ฅ ๋‹ค์ด๋ธŒ, 7์ฃผ์ฐจ-3

์Šคํ„ฐ๋””: ์›”๊ฐ„ CS, https://github.com/monthly-cs/2024-03-modern-react-deep-dive
์˜ค๋Š˜ ์ง„ํ–‰: ๊ฐœ์ธ๊ณต๋ถ€


DIL-week7-3_2024-04-17

| DIL ์ฃผ์ฐจ | ๋ฒ”์œ„ | ๋‚ด์šฉ | ์˜ค๋Š˜์ฐจ ์ง„๋„ | | -------- | ---------- | --------------------------------------------------------------------------------------- | ----------- | | 7์ฃผ์ฐจ | 12์žฅ, 13์žฅ | ๋ชจ๋“  ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์•ผ ํ•  ํ•ต์‹ฌ ์›น ์ง€ํ‘œ, ์›น ํŽ˜์ด์ง€์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ• | 790~799p |

์˜ค๋Š˜ ์ฝ์€ ๋‚ด์šฉ์„ markdown์œผ๋กœ ๊ฐ„๋‹จํžˆ ๋ฉ”๋ชจ
์ฝ์€ ์‹œ๊ฐ„: ์ด 1์‹œ๊ฐ„


FID

์˜ˆ์ œ

  • ์‚ฌ์šฉ์ž๋‚˜ E2E ๋„๊ตฌ์˜ ์ž…๋ ฅ์ด ํ•„์š”!
    • ํด๋ฆญ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ์  => ์‹ค์ œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์žˆ๊ธฐ ๊นŒ์ง€
      • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์™„๋ฃŒ๋˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ์ธก์ •x
        • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์˜ ์‹คํ–‰ ์‹œ๊ฐ„ ์ธก์ •์€? Event Timming API๋ฅผ ์‚ฌ์šฉ

๊ธฐ์ค€ ์ ์ˆ˜

| FID, ์ตœ์ดˆ ์ž…๋ ฅ ์ง€์—ฐ | ๊ธฐ์ค€ ๊ฒฐ๊ณผ | | ------------------- | --------- | | >100ms | ์ข‹์Œ | | >300ms | ๋ณดํ†ต | | โ‰ค300ms | ๋‚˜์จ |

๊ฐœ์„  ๋ฐฉ์•ˆ

  • ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์— ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์—ฌ์œ ๋ฅผ ์ค˜์•ผ ํ•œ๋‹ค

long task

  • ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?
    • ์•„๋‹ˆ๋ผ๋ฉด ์„œ๋ฒ„๋กœ
    • ๋งž๋‹ค๋ฉด ๊ธด ์ž‘์—… ๋‚˜๋ˆ„๊ธฐ
      • ๋‹น์žฅ ๋กœ๋”ฉ์— ํ•„์š”ํ•˜์ง€ ์•Š์€ ์š”์†Œ?
        • ๋ฆฌ์•กํŠธ์˜ Suspence๋‚˜ lazy, Next.js์˜ dynamic

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์ตœ์†Œํ™”

  • ์•ˆ ์“ฐ๋Š” js ๋ฆฌ์†Œ์Šค => ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ์ปค๋ฒ„๋ฆฌ์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค
  • polyfill์˜ ๊ฒฝ์šฐ! ๋‹ค์Œ ๋‚ด์šฉ ๊ณ ๋ คํ•˜๊ธฐ
    • ํ•„์š”ํ•œ ํ™˜๊ฒฝ์ธ๊ฐ€? ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ € ์ง€์› ์•ˆํ•œ๋‹ค๋ฉด? ๊ตณ์ด?
    • ๊ผญ ํ•„์š”ํ•œ ํด๋ฆฌํ•„์ธ๊ฐ€? ์—ฌ๋Ÿฌ ๊ตฐ๋ฐ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ์ธ์ง€ ํ™•์ธ
      • ๋ช‡ ๊ตฐ๋ฐ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด? ์ €์ˆ˜์ค€์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ -> ์ฝ”๋“œ ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • @babel/preset-env๋ฅผ ์‚ฌ์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋‚ด์šฉ๋งŒ ํด๋ฆฌํ•„์— ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.
  • Next.js์˜ SWC ๋‚ด๋ถ€์— ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ๋ณ„๋„ ์ฒ˜๋ฆฌx

ํƒ€์‚ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์‹คํ–‰ ์ง€์—ฐ

  • ex) Google Analytics, Firebase ๋“ฑ์˜ ๋„๊ตฌ
    • ์›น ํŽ˜์ด์ง€ ๋กœ๋“œ์— ์ค‘์š”ํ•œ ์ž์› ์•„๋‹˜

| script ์†์„ฑ | ๋‹ค์šด๋กœ๋“œ | ์‹คํ–‰ | | ----------- | ----------------------------------- | --------------------------------------------------------- | | defer | ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์™€ ํ•จ๊ป˜ ๋ณ‘๋ ฌ ๋‹ค์šด | ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰, ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ ์ˆœ์„œ๋Œ€๋กœ | | async | ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์™€ ํ•จ๊ป˜ ๋ณ‘๋ ฌ ๋‹ค์šด | ํŽ˜์ด์ง€๊ฐ€ ์™„์ „ํžˆ ๋กœ๋”ฉ๋œ ์ดํ›„์— ์‹คํ–‰ | | - | script๋ฅผ ๋งŒ๋‚˜๋ฉด ๋™๊ธฐ์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œ | ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰, ๋ธ”๋ฝํ‚น |

CLS, Cumulative Layout Shift

์ •์˜

  • ๋ทฐํฌํŠธ ๋‚ด๋ถ€์˜ Layout Shift๋งŒ ์ธก์ •
  • ์ตœ์ดˆ ๋ Œ๋”๋ง์ด ์‹œ์ž‘๋œ ์œ„์น˜์—์„œ ๋ ˆ์ด์•„์›ƒ์˜ ์ด๋™์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ๋ ˆ์ด์•„์›ƒ ์ด๋™ ์ ์ˆ˜๋กœ ๊ธฐ๋กํ•˜๊ฒŒ ๋œ๋‹ค.

The layout shift score is a product of two measures

Layout shift score
https://web.dev/articles/cls#layout-shift-score

  • ์˜ํ–ฅ๋ถ„๋ฅ ๊ณผ ๊ฑฐ๋ฆฌ๋ถ„๋ฅ ์„ ๊ณฑํ•จ

  • impact fraction

    image

  • distance fraction

    image

    • Initially, the layout shift score was calculated based only on impact fraction. The distance fraction was introduced to avoid overly penalizing cases where large elements shift by a small amount.