πŸŽ„ μ„±μž₯일지 4.0

μ±… ν–‰λ³΅ν•œ 이기주의자(웨인 닀이어)의 λ‚΄μš©μ— μžκ·Ήλ°›μ•„ μ‹œμž‘ν•˜λŠ” μ†Œλ°•ν•œ μ„±μž₯기둝

μ‚΄μ•„μžˆλŠ” 꽃과 죽은 꽃은 μ–΄λ–»κ²Œ κ΅¬λ³„ν•˜λŠ”κ°€?
μ„±μž₯ν•˜κ³  μžˆλŠ” 것이 μ‚΄μ•„ μžˆλŠ” 것이닀.
생λͺ…μ˜ μœ μΌν•œ μ¦κ±°λŠ” μ„±μž₯이닀!

🌳 (1.0)ν‚€μ›Œλ“œ
μ΅œλŒ€ν•œ κ°„λ‹¨ν•˜κ²Œ 정리, 좔후에 λ³΄λ©΄μ„œ 슀슀둜 μ„€λͺ…
πŸ‰ (2.0)κ²½ν—˜ μœ„μ£Όλ‘œ
λ‹¨μˆœ 정보λ₯Ό μ „λ‹¬ν•˜κΈ°λ³΄λ‹€ 무엇을 λ°°μ› κ³  μ–΄λ–»κ²Œ ν•΄κ²°ν–ˆλŠ”μ§€ 짧고 κ°„λ‹¨ν•˜κ²Œ μž‘μ„±
❄️ (3.0)정해진 ν…œν”Œλ¦Ώμ— λ§žμΆ°μ„œ
ν‚€μ›Œλ“œ, κ²½ν—˜ λͺ¨λ‘ μ’‹λ‹€. λ‹€λ§Œ 맀일 μž‘μ„±ν•˜κΈ°λ‘œ 마음 λ¨Ήμ€λ§ŒνΌ ν•΅μ‹¬λ§Œ κ°„κ²°ν•˜κ²Œ 정리할 수 있게 ν…œν”Œλ¦Ώμ„ μž‘μ„±
(3.1)230102λΆ€ν„° μ‹œμž‘λ˜λŠ” ν•™μŠ΅μ— κ΄€ν•œ λ‚΄μš© μΆ”κ°€
(3.2)230313λΆ€ν„° 쒀더 κ²½ν—˜, 감정 μœ„μ£Όμ˜ λ‚΄μš©λ„ λ‹΄κΈ°!
🌾 (4.0)ν•™μŠ΅ ν‚€μ›Œλ“œμ—μ„œ μ΅œλŒ€ν•œ κ°„λ‹¨ν•œ 정보 제곡, κ³ λ―Όμ—μ„œ λ‚΄ κ²½ν—˜μ„ μžμ„Ένžˆ 적자!

πŸ”‘ 였늘의 ν•™μŠ΅ ν‚€μ›Œλ“œ

λΈŒλΌμš°μ €μ˜ λ Œλ”λ§ κ³Όμ •

JavaScript μ‹€ν–‰ -> layout 계산 -> render tree -> paint -> composite

λ ˆμ΄μ•„μ›ƒ 단계(λ¦¬ν”Œλ‘œμš°)

DOM + CSSOM으둜 Render Treeκ°€ μ™„μ„±λ˜λ©΄ 이λ₯Ό ν† λŒ€λ‘œ λ ˆμ΄μ•„μ›ƒμ„ κ³„μ‚°ν•˜κ²Œ λœλ‹€. μ΄λ•Œ, λ Œλ”νŠΈλ¦¬μ—λŠ” νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ν•˜λŠ”λ° ν•„μš”ν•œ λ…Έλ“œλ§Œ ν¬ν•¨ν•œλ‹€.

페인트 단계

μ•žμ„  κ³Όμ •μ—μ„œ μš”μ†Œλ“€μ˜ 크기, λͺ¨μ–‘, μœ„μΉ˜κΉŒμ§€ μ•Œμ•˜λ‹€λ©΄ 이제 μ–΄λ–€ μˆœμ„œλ‘œ 그릴지 κ²°μ •ν•˜κ²Œ λœλ‹€.

μ»΄ν¬μ§€νŠΈ(ν•©μ„±) 단계

  • λ ˆμ΄μ•„μ›ƒμ„ ν•˜κ³  νŽ˜μΈνŠΈκ°€ λλ‚˜λ©΄, 이런 정보λ₯Ό 슀크린의 ν”½μ…€λ‘œ λ°”κΎΈλŠ” λ ˆμŠ€ν„° 라이징 μž‘μ—…μ΄ μΌμ–΄λ‚œλ‹€. 단, 이 방법은 크둬이 처음 κ³΅κ°œλ˜μ—ˆμ„ λ•Œ μ‚¬μš©λ˜μ—ˆκ³  ν˜„λŒ€μ˜ λΈŒλΌμš°μ €λŠ” μ»΄ν¬μ§€νŒ…μ΄λΌλŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€.
  • μ»΄ν¬μ§€νŒ…μ€ ν•œ νŽ˜μ΄μ§€μ˜ 뢀뢄듀을 μ—¬λŸ¬ λ ˆμ΄μ–΄λ‘œ λ‚˜λˆˆ λ’€, 그것듀을 각각 λ ˆμŠ€ν„° λΌμ΄μ§•ν•˜μ—¬ 컴포지터 μŠ€λ ˆλ“œμ—μ„œ ν•©μ„±ν•˜λŠ” κΈ°μˆ μ΄λ‹€. μ–΄λ–€ μš”μ†Œλ“€μ΄ μ–΄λ–€ λ ˆμ΄μ–΄μ— μžˆμ–΄μ•Ό ν•˜λŠ”μ§€ μ•ŒκΈ° μœ„ν•΄μ„œ, λ©”μΈμŠ€λ ˆλ“œλŠ” λ ˆμ΄μ•„μ›ƒ 트리λ₯Ό μˆœνšŒν•˜λ©° λ ˆμ΄μ–΄ 트리λ₯Ό μƒμ„±ν•œλ‹€. λ ˆμ΄μ–΄ νŠΈλ¦¬κ°€ μƒμ„±λ˜κ³  페인트 μˆœμ„œκ°€ κ²°μ •λ˜λ©΄ 메인 μŠ€λ ˆλ“œλŠ” 컴포지터 μŠ€λ ˆλ“œμ—κ²Œ μ»€λ°‹ν•œλ‹€. 그러면 컴포지터 μŠ€λ ˆλ“œκ°€ 각 λ ˆμ΄μ–΄λ₯Ό λ ˆμŠ€ν„° λΌμ΄μ§•ν•˜κ²Œ λœλ‹€.

transform의 이점

  • transition을 ν†΅ν•œ μ• λ‹ˆλ©”μ΄μ…˜ 효과λ₯Ό 쀄 λ•Œ, μ›¬λ§Œν•œ css 속성듀을 λ³€ν™”μ‹œν‚€λŠ” 것은 λ¦¬ν”Œλ‘œμš°(λ¦¬λ ˆμ΄μ•„μ›ƒ)λ₯Ό μΌμœΌν‚¨λ‹€.
  • κ·ΈλŸ¬λ‚˜ transform은 composite λ‹¨κ³„μ—μ„œμ˜ λ³€ν™”λ₯Ό μΌμœΌν‚€λ―€λ‘œ λ¦¬ν”Œλ‘œμš°, 리페인트 과정없이 훨씬 더 효율적으둜 transition을 ν†΅ν•œ μ• λ‹ˆλ©”μ΄μ…˜ 효과λ₯Ό 쀄 수 μžˆλ‹€.
  • κ·Έλƒ₯ left: 200px 보닀 transform: translateX(200px)κ°€ 더 νš¨μœ¨μ μ΄λ‹€.
    • left둜 μ΄λ™ν•˜λŠ” 건 layout λ‹¨κ³„μ˜ λ³€ν™”λ₯Ό μΌμœΌν‚€μ§€λ§Œ, translate은 compositeμ—μ„œ λ…λ¦½λœ λ ˆμ΄μ–΄μ—μ„œ gpuκ°€ μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

λ¦¬ν”Œλ‘œμš°(λ¦¬λ ˆμ΄μ•„μ›ƒ)와 리페인트

κ°€λŠ₯ν•˜λ©΄ 동적인 λ³€ν™”λŠ” λ¦¬ν”Œλ‘œμš°λ³΄λ‹¨ λ¦¬νŽ˜μΈνŠΈκ°€ κ·Έλ‚˜λ§ˆ 더 νš¨μœ¨μ μž„μ„ μ•Œ 수 μžˆλ‹€. λ¦¬ν”Œλ‘œμš° 과정은 λ¬Έμ„œ λ‚΄μš©μ΄λ‚˜ ꡬ쑰 λ˜λŠ” μœ„μΉ˜λ₯Ό λ³€κ²½ν•˜λŠ” 경우 μΌμ–΄λ‚˜λ©° λ¦¬νŽ˜μΈνŠΈλŠ” μš”μ†Œμ˜ μŠ€νƒ€μΌμ„ λ³€κ²½ν•˜λŠ” κ²½μš°μ— λ°œμƒν•œλ‹€. 더 효율적인 것은 composite(ν•©μ„±) λ‹¨κ³„μ—μ„œ μ²˜λ¦¬ν•˜λŠ” 것이닀.

πŸ€ 였늘의 κ³ λ―Ό ν‚€μ›Œλ“œ

class constructorμ—λŠ” μ΅œλŒ€ν•œ μƒμ„±μžλ‘œμ„œμ˜ μ—­ν• λ§Œ μž‘μ„±ν•  것

κ·Έλ™μ•ˆ classλ₯Ό κ΅¬ν˜„ν•  λ•Œ, constructorμ—μ„œ ν•΄λ‹Ή 클래슀의 ν”„λ‘œνΌν‹°λ₯Ό μ„ μ–Έν•˜λŠ” 것 λΏμ•„λ‹ˆλΌ, μ˜¨κ°– λ‘œμ§μ„ λ‹€ λ„£μ—ˆμ—ˆλŠ”λ°β€¦
κΌ­ μ•ˆλ˜λŠ” 건 μ•„λ‹ˆμ§€λ§Œ 이게 λ­”κ°€ 잘λͺ»λ˜μ—ˆλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€. 생각해보면 κ·Έλ ‡λ‹€. classμ—μ„œ instanceκ°€ λ§Œλ“€μ–΄μ§ˆ λ•Œ, 즉 new둜 호좜될 λ•Œ constructor(μƒμ„±μž)κ°€ μ‹€ν–‰λ˜λ©΄μ„œ μƒνƒœκ°’λ“€μ„ μ •ν•΄μ£ΌλŠ” 것인데…! κ·Έ μ•ˆμ—μ„œ addEventListener도 뢙이고, λ•Œλ‘œλŠ” 비동기 μ²˜λ¦¬λ„ ν•˜κ³ β€¦ κ·ΈλŸ¬λ‹ˆκΉŒ μ½”λ“œκ°€ μ§€μ €λΆ„ν–ˆμ§€γ… β€¦ μ•žμœΌλ‘œλŠ” μ΅œλŒ€ν•œ μƒμ„±μžμ™€ μƒνƒœ, λ©”μ„œλ“œλ₯Ό μ’€ λͺ…ν™•ν•˜κ²Œ κ΅¬λΆ„μ§€μ–΄μ„œ λ‚˜λˆ λ΄μ•Όκ² λ‹€.

πŸ“ μš”μ•½ 및 ν•˜λ£¨ 간단 회고

였늘 μ΅œλŒ€ν•œ μ»΄ν¬λ„ŒνŠΈ 섀계λ₯Ό 정말 λŒ€μΆ© λ§ˆλ¬΄λ¦¬ν–ˆλ‹€. ν—Œλ° 아직 λ™μ μœΌλ‘œ μš”μ†Œλ₯Ό 넣어쀬을 λ•Œ, 슀λ₯΄λ₯΅ λ³΄μ΄λŠ” μ• λ‹ˆλ©”μ΄μ…˜μ€ μ–΄λ–»κ²Œ 주어야할지 κ³ λ―Όλœλ‹€. μ΄μ „μ²˜λŸΌ κ·Έλƒ₯ css둜 κ°€λ €λ’€λ‹€κ°€ λ³΄μ—¬μ£ΌλŠ” 식이면 이해가 λ˜κ² λŠ”λ°, μ§€κΈˆ μ»΄ν¬λ„ŒνŠΈ 기반 μ½”λ“œμ—μ„œλŠ” 맀번 λ²„νŠΌ 클릭 μ‹œ λ™μ μœΌλ‘œ 데이터λ₯Ό λ°”νƒ•μœΌλ‘œ νƒœκ·Έλ₯Ό λ§Œλ“€μ–΄μ„œ λ„£μ–΄μ£ΌκΈ° λ•Œλ¬Έμ— 아직 잘 감이 μ•ˆμ˜¨λ‹€. 근데 뭐 방법은 μžˆμ„ν…Œλ‹ˆκΉŒ~~~

였늘의 μž˜ν•œ 점

  • ν•˜λ €κ³  ν–ˆλ˜ κ³„νšλ“€ 거의 λ‹€ ν•œ 점!(λ”± ν•˜λ‚˜ λͺ»ν–ˆμ§€λ§Œ..!)

였늘의 μ•„μ‰¬μš΄ 점

  • μœ„μ— λ”± ν•˜λ‚˜ λͺ»ν•œκ±°..?γ…‹γ…‹γ…‹γ…‹γ…‹

μ°Έκ³