ν”Όλ“œλ‘œ λŒμ•„κ°€κΈ°
πŸš€ State.js - Build Reactive, Interactive UIs Using Only HTML + CSS
Dev.toDev.to
Frontend

HTML Data Attribute 기반 CSS Variable λ™κΈ°ν™”λ‘œ Zero-JS λ°˜μ‘ν˜• UI κ΅¬ν˜„

πŸš€ State.js - Build Reactive, Interactive UIs Using Only HTML + CSS

iDev-Games2026λ…„ 6μ›” 3일4λΆ„intermediate

Context

ν˜„λŒ€ ν”„λ‘ νŠΈμ—”λ“œ 개발의 λ³΅μž‘ν•œ Build Pipelineκ³Ό Virtual DOM 기반의 μƒνƒœ 관리 μ˜€λ²„ν—€λ“œ λ°œμƒ. λ‹¨μˆœν•œ 수치 μ—…λ°μ΄νŠΈμ‘°μ°¨ ν”„λ ˆμž„μ›Œν¬ ν•™μŠ΅κ³Ό μ»΄ν¬λ„ŒνŠΈ 섀계가 κ°•μ œλ˜λŠ” λΉ„νš¨μœ¨μ  ꡬ쑰의 ν•œκ³„ λ…ΈμΆœ.

Technical Solution

  • HTML Data Attributeλ₯Ό Single Source of Truth둜 μ •μ˜ν•˜λŠ” 선언적 μƒνƒœ 관리 ꡬ쑰 섀계
  • Attribute λ³€κ²½ 사항을 μ‹€μ‹œκ°„ κ°μ‹œν•˜μ—¬ CSS Variable둜 μžλ™ λ§€ν•‘ν•˜λŠ” Reactive Engine κ΅¬ν˜„
  • data-state-trigger 및 data-state-bindλ₯Ό ν†΅ν•œ JS 둜직 μ—†λŠ” μƒνƒœ 전이 및 μ—…λ°μ΄νŠΈ λ©”μ»€λ‹ˆμ¦˜ ꡬ좕
  • Template String Interpolationκ³Ό Conditional Classλ₯Ό ν†΅ν•œ 데이터 기반 UI λ Œλ”λ§ μ΅œμ ν™”
  • LocalStorage 연동 및 Interval Trigger λ„μž…μ„ ν†΅ν•œ μƒνƒœ 지속성 및 μ‹œκ°„ 기반 μžλ™ν™” 둜직 톡합
  • HTML Include 방식을 ν†΅ν•œ Build Step μ—†λŠ” μ»΄ν¬λ„ŒνŠΈ μž¬μ‚¬μš©μ„± 확보

- λ‹¨μˆœ 수치 ν‘œμ‹œ 및 κ²Œμ΄μ§€ 바와 같은 저밀도 μƒνƒœ μ—…λ°μ΄νŠΈ UI에 적용 κ²€ν†  - λ””μžμ΄λ„ˆ-개발자 κ°„ ν˜‘μ—… μ‹œ CSS Variable 기반의 μΈν„°νŽ˜μ΄μŠ€ ν‘œμ€€ν™” κ°€λŠ₯μ„± 확인 - Backend-First ν”„λ ˆμž„μ›Œν¬(HTMX, Rails λ“±) ν™˜κ²½μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ°˜μ‘μ„± μΆ”κ°€ μ‹œ κ³ λ € - Virtual DOM 없이 HTML ν‘œμ€€ μ†μ„±λ§ŒμœΌλ‘œ μƒνƒœ 전이 μ œμ–΄κ°€ κ°€λŠ₯ν•œμ§€ μ•„ν‚€ν…μ²˜ 검증

원문 읽기