ν”Όλ“œλ‘œ λŒμ•„κ°€κΈ°
I Built a Lightweight JavaScript Library for Dark/Light Mode β€” DayniteJs πŸŒ—
Dev.toDev.to
Frontend

κ°œλ°œμžκ°€ λ§€ ν”„λ‘œμ νŠΈλ§ˆλ‹€ μž¬μž‘μ„±ν•˜λ˜ Dark Mode λ‘œμ§μ„ DayniteJs 라이브러리둜 μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ†”λ£¨μ…˜μœΌλ‘œ ν†΅ν•©ν–ˆλ‹€

I Built a Lightweight JavaScript Library for Dark/Light Mode β€” DayniteJs πŸŒ—

suhaib Muhammad Babangda2026λ…„ 4μ›” 1일2λΆ„beginner

Context

ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλŠ” ν”„λ‘œμ νŠΈλ§ˆλ‹€ Dark/Light Mode ν† κΈ€ λ‘œμ§μ„ 반볡 κ΅¬ν˜„ν–ˆλ‹€. localStorage 기반 μ‚¬μš©μž μ„€μ • 관리와 μ‹œμŠ€ν…œ ν…Œλ§ˆ 감지(prefers-color-scheme)λ₯Ό 맀번 μˆ˜λ™ μ²˜λ¦¬ν–ˆλ‹€. 이 반볡 μž‘μ—…μ˜ λΉ„νš¨μœ¨μ„±μ΄ 핡심 문제둜 λ“œλŸ¬λ‚¬λ‹€.

Technical Solution

  • [npm νŒ¨ν‚€μ§€] β†’ [daynitejs] μ„€μΉ˜ ν›„ [import]둜 λ‘œλ“œ
  • [ν…Œλ§ˆ μ „ν™˜] β†’ [toggle() λ©”μ„œλ“œ] 호좜둜 [light ↔ dark] μ „ν™˜
  • [μ„€μ • μ €μž₯] β†’ [localStorage]에 [μ‚¬μš©μž μ„ ν˜Έλ„] μžλ™ μ˜μ†
  • [μ‹œμŠ€ν…œ 감지] β†’ [prefers-color-scheme] λ―Έλ””μ–΄ 쿼리둜 [OS ν…Œλ§ˆ] μžλ™ 인식
  • [CSS 연동] β†’ [data-theme 속성]κ³Ό [CSS λ³€μˆ˜(--bg-color, --text-color)]둜 [ν…Œλ§ˆλ³„ μŠ€νƒ€μΌ] μ •μ˜

Impact

수치 기반 μ„±λŠ₯ λ³€ν™” μ—†μŒ

Key Takeaway

μž¬μ‚¬μš© κ°€λŠ₯ν•œ 라이브러리 섀계 μ‹œ npm 배포 κ³Όμ •, 버전 관리 μ „λž΅, 크둜슀 λΈŒλΌμš°μ € ν˜Έν™˜μ„± 검증이 핡심 μ—­λŸ‰μœΌλ‘œ ν•„μš”ν•˜λ‹€.


ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈμ—μ„œ Dark Mode κ΅¬ν˜„ μ‹œ data-theme 속성과 CSS λ³€μˆ˜λ₯Ό μ‘°ν•©ν•˜κ³ , DayniteJs toggle() λ©”μ„œλ“œλ‘œ localStorage 기반 μ‚¬μš©μž 섀정을 μžλ™ μ €μž₯ν•˜λ©΄ 맀번 μž¬μž‘μ„±ν•˜λ˜ λ‘œμ§μ„ μ œκ±°ν•  수 μžˆλ‹€

원문 읽기