πŸ“–ν”„λ ˆμž„μ›Œν¬ μ—†λŠ” ν”„λ‘ νŠΈ κ°œλ°œμ„ 읽고 - 2μž₯. λžœλ”λ§

MJΒ·2023λ…„ 1μ›” 3일
0

책을 읽고

λͺ©λ‘ 보기
2/5
post-thumbnail

μ›Ή ν”„λ‘ νŠΈμ—”λ“œ 개발자둜 μ„±μž₯ν•˜κΈ° μœ„ν•΄ μš°ν…Œμ½”μ—μ„œ μΆ”μ²œλ°›μ€ 책을 읽고

βœ”οΈ λžœλ”λ§?

λͺ¨λ“  μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ κΈ°λŠ₯ 쀑 ν•˜λ‚˜μ•„μΈ λ°μ΄ν„°μ˜ ν‘œμ‹œλ‹€.
데이터λ₯Ό ν‘œμ‹œν•œλ‹€λŠ” 것은 μš”μ†Œλ₯Ό ν™”λ©΄μ΄λ‚˜ λ‹€λ₯Έ 좜λ ₯ μž₯μΉ˜μ— λžœλ”λ§ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

βœ”οΈ DOM

λ¬Έμ„œ 객체 λͺ¨λΈ(DOM: Doucument Ojbect Model): ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μœΌλ‘œ μš”μ†Œλ₯Ό λžœλ”λ§ ν•˜λŠ” 방식
λͺ¨λ“  HTML은 트리둜 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

DOM은 HTMLμš”μ†Œλ‘œ μ •μ˜λœ 트리λ₯Ό κ΄€λ¦¬ν•˜λŠ” 방법이닀.
Nodeλž€ HTML νŠΈλ¦¬μ—μ„œ λ…Έλ“œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” κΈ°λ³Έ μΈν„°νŽ˜μ΄μŠ€λ‹€.

βœ”οΈ λžœλ”λ§ μ„±λŠ₯ λͺ¨λ‹ˆν„°λ§

μ›Ήμš© λžœλ”λ§ 엔진을 섀계할 λ•ŒλŠ” 가독성과 μœ μ§€ 관리성을 염두에 둬야 ν•œλ‹€.
λžœλ”λ§μ˜ μ„±λŠ₯을 λͺ¨λ‹ˆν„°λ§ν•˜λŠ” 방법은

  1. 크둬 개발자 λ„κ΅¬μ—μ„œ FPSλ₯Ό ν™•μΈν•˜κΈ°

    Ctrl + Shift + Pλ₯Ό λˆ„λ₯΄κ³  show frames per second(FPS) meter 검색

    μ™Όμͺ½ μƒλ‹¨μ—μ„œ ν˜„μž¬ Frame Rate와 GPU μ‚¬μš©λŸ‰μ„ μ•Œ 수 μžˆλ‹€.


  2. stats.js μ‚¬μš©
    stats.js κΉƒν—ˆλΈŒ
    μ–΄λ–€ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—λ„ μ‰½κ²Œ ν¬ν•¨μ‹œν‚¬ 수 μžˆλŠ” μ•„μ£Ό κ°„λ‹¨ν•œ 라이브러리인 stats.jsλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.
    ν”„λ ˆμž„κ³Ό ν• λ‹Ήλœ λ©”κ°€λ°”μ΄νŠΈμ˜ λ©”λͺ¨λ¦¬λ₯Ό λžœλ”λ§ν•˜λŠ”λ° ν•„μš”ν•œ λ°€λ¦¬μ΄ˆλ₯Ό ν‘œμ‹œν•  μˆ˜λ„ μžˆλ‹€.

βœ”οΈ λžœλ”λ§ ν•¨μˆ˜

순수 ν•¨μˆ˜λ‘œ μš”μ†Œλ₯Ό λžœλ”λ§ν•œλ‹€λŠ” DOMμš”μ†Œκ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μƒνƒœμ—λ§Œ μ˜μ‘΄ν•œλ‹€μ™€ λ™μΌν•œ 의미λ₯Ό κ°–λŠ”λ‹€.
μˆœμˆ˜ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ ν…ŒμŠ€νŠΈ κ°€λŠ₯μ„±μ΄λ‚˜ ꡬ성 κ°€λŠ₯μ„± 같은 μž₯점이 μžˆλ‹€.

ꡬ성 μš”μ†Œ ν•¨μˆ˜
ꡬ성 μš”μ†Œ 기반의 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μž‘μ„±ν•˜λ €λ©΄ ꡬ성 μš”μ†Œ κ°„μ˜ μƒν˜Έμž‘μš©μ— 선언적 방식을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
μ‹œμŠ€ν…œμ€ λͺ¨λ“  뢀뢄을 μžλ™μœΌλ‘œ μ—°κ²°ν•  것이닀.
νŠΉμ • μ‚¬λ‘€μ—μ„œ μ‚¬μš©ν•  ꡬ성 μš”μ†Œλ₯Ό λ³„λ„λ‘œ μ„ μ–Έν•œλ‹€.

βœ”οΈ 정적 λžœλ”λ§ μŠ€ν‚€λ§ˆ

λΈŒλΌμš°μ € λžœλ”λ§ πŸ”œ λ‹€μŒ λžœλ”λ§ λŒ€κΈ° πŸ”œ μƒˆ 가상 λ…Έλ“œ πŸ”œ DOM μ‘°μž‘ πŸ”œ λΈŒλΌμš°μ € λžœλ”λ§

βœ”οΈ 동적 데이터 λžœλ”λ§

βœ”οΈ 가상 DOM

가상 DOM은 선언적 λžœλ”λ§ μ—”μ§„μ˜ μ„±λŠ₯을 κ°œμ„ μ‹œν‚€λŠ” 방법이닀.
UI ν‘œν˜„μ€ λ©”λͺ¨λ¦¬μ— μœ μ§€λ˜κ³  'μ‹€μ œ' DOMκ³Ό λ™κΈ°ν™”λœλ‹€.
μ‹€μ œ DOM은 κ°€λŠ₯ν•œ 적은 μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.

μœ„ 과정을 쑰정이라고 λΆˆλ¦°λ‹€.

βœ”οΈ Diff μ•Œκ³ λ¦¬μ¦˜

가상 DOM의 핡심은 Diff μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€.
μ‹€μ œ DOM을 λ¬Έμ„œμ—μ„œ λΆ„λ¦¬λœ κ°€μƒμ˜ μƒˆλ‘œμš΄ DOMμš”μ†Œμ˜ μ‚¬λ³ΈμœΌλ‘œ λ°”κΎΈλŠ” κ°€μž₯ λΉ λ₯Έ 방법을 μ°Ύμ•„λ‚Έλ‹€

    1. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 가상DOMλ…Έλ“œλ₯Ό μƒμ„±ν•˜κ³ 
    1. 가상DOM λ…Έλ“œλŠ” Diffμ•Œκ³ λ¦¬μ¦˜μ— μ˜ν•΄ μ²˜λ¦¬λœλ‹€.
    1. Diff μ•Œκ³ λ¦¬μ¦˜μ„ 톡해 μ‹€μ œ DOM으둜 μ—…λ°μ΄νŠΈν•˜κ³ 
    1. μ‹€μ œDOM은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 이벀트 λ°œμƒμ„ μ€€λΉ„ν•œλ‹€.
  • 그리고 1λ²ˆλΆ€ν„° λ‹€μ‹œ λ°˜λ³΅λœλ‹€.
profile
A fancy web like a rose

0개의 λŒ“κΈ€