λΆ‰μ€κ±°μœ„ / GoOSe

json-editor 1.0

아티클 정보

λ‘₯μ§€
Tool & Service
λΆ„λ₯˜
Extra
등둝일
2023-08-31 17:10:52

이전 json-editor λ²„μ „μ—μ„œ 9λ…„λ§Œμ— μ—…κ·Έλ ˆμ΄λ“œλ₯Ό ν•˜κ²Œ λ˜μ—ˆλ‹€.
처음 json-editor 에디터λ₯Ό λ§Œλ“€μ—ˆμ„ λ‹Ήμ‹œμ—λŠ” μ™„μ „νžˆ jquery μ²œν•˜λ‚˜ λ§ˆμ°¬κ°€μ§€μΌ μ •λ„λ‘œ μ›Ήν”„λ‘œκ·Έλž¨μ€ λŒ€λΆ€λΆ„ jquery 라이브러리둜 λ§Œλ“€μ–΄μ Έ μžˆμ—ˆκ³ , λ‚˜λ„ μ£Όλ ₯으둜 jquery둜 κ°œλ°œν•˜κ³  μžˆλ‹€λ³΄λ‹ˆ 재미있게 ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ—ˆλ˜ 기얡이 λ‚œλ‹€.

json-editor-v1-001.png

이 json-editor ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ—ˆλ˜ μ΄μœ κ°€ λ„€λΉ„κ²Œμ΄μ…˜ 데이터λ₯Ό μ „μš© UI둜 λ§Œλ“€μ–΄ λ³€ν™˜μž‘μ—…μ„ 거쳐가며 λ§Œλ“œλŠ”κ²ƒλ³΄λ‹€ 데이터 자체λ₯Ό νŽΈμ§‘ν•˜λŠ” UI둜 λ§Œλ“€μ–΄ λ„€λΉ„κ²Œμ…˜μ΄λ‚˜ λ‹€λ₯Έ 섀정값듀을 νŽΈμ§‘ν• λ•Œ μ“°λŠ”κ²Œ μ’‹λ‹€κ³  μƒκ°λ˜μ–΄ λ§Œλ“€κ²Œ λ˜μ—ˆλ‹€.

ν˜„μž¬λ„ μ—¬μ „νžˆ μ‚¬μš©ν•˜κ³  μžˆμ—ˆκ³ , 계속 ν•„μš”ν•˜μ—¬ μ½”λ“œλ₯Ό λ‹€μ‹œ μž‘μ„±ν•  μƒκ°μœΌλ‘œ 1.0μ΄λΌλŠ” λ²„μ „μœΌλ‘œ μƒˆλ‘œ μ œμž‘μ— λ“€μ–΄κ°”λ‹€.

κ΅¬μƒν•˜κΈ°

이미 λ§Œλ“€μ–΄μ Έ μžˆλŠ”κ²ƒμ„ 리메이크인 μ…ˆμ΄λΌμ„œ μƒˆλ‘œ μ „μ²΄μ μœΌλ‘œ μƒˆλ‘œ λ– μ˜¬λ¦΄κ²ƒμ€ μ—†μ—ˆλ‹€. κ·Έλž˜μ„œ ꡬ상에 κ΄€ν•΄μ„œλŠ” μ§€λ‚œ λ²„μ „μ—μ„œ μžˆμ—ˆλ˜ λ¬Έμ œμ λ“€μ΄λ‚˜ κ°œμ„ ν•  수 μžˆλŠ” μš”μ†Œλ“€μ„ μœ„μ£Όλ‘œ λ– μ˜¬λ Έλ‹€.

μ—¬νƒœκΉŒμ§€ μ‚¬μš©ν•΄μ˜€λ©΄μ„œ λΆˆνŽΈν–ˆλ˜ μš”μ†Œλ“€λ„ λ– μ˜¬λ €λ³΄κ³  κ³Όκ±° μ΄μŠˆκ°€ 기둝된 것듀을 μ‚΄νŽ΄λ³΄λ©°μ„œ 어떀것듀을 더 κ°œμ„ ν•˜κ³  κΈ°λŠ₯을 μΆ”κ°€ν• κΉŒ κ³ λ―Όν•˜λ©° μ •λ¦¬ν–ˆλ‹€.

json-editor-v1-002.webp

κ΅¬μƒν•˜λ©΄μ„œ μš”μ¦˜μ˜ json editor의 ν˜•νƒœλŠ” μ–΄λ–€κ°€ λ¦¬μ„œμΉ˜ ν•΄λ³΄μ•˜μ§€λ§Œ μ˜ˆμ „μ— λ§Œλ“€μ—ˆλ˜ μ‹œκΈ°μ™€ λ³„λ°˜ 차이가 μ—†μ—ˆλ‹€.
λ””μžμΈμ΄ μ’‹μ•„ λ³΄μ΄λŠ”κ²ƒλ„ ν•˜λ‚˜λ„ μ—†μ—ˆκ³ , 잘 μ‚¬μš©ν•˜λŠ” νŽΈλ„ μ•„λ‹ˆλΌμ„œ κ·Έλ‹€μ§€ 관심도가 높은 μ˜μ—­μ€ μ•„λ‹Œκ±° κ°™μ•„μ„œ 맨땅에 κ°œμ²™ν• λ§›μ΄ λ‚œλ‹€.

μ΄λ²ˆμ—λŠ” jqueryμ—μ„œ λ²—μ–΄λ‚˜κ³ μž ν•˜λŠ” 뢀뢄이 κ°€μž₯μ»Έκ³ , μ‰½κ²Œ μ›Ή μ—˜λ¦¬λ¨ΌνŠΈλ‚˜ ν”„λ ˆμž„μ›Œν¬λ“€μ˜ μ»΄ν¬λ„ŒνŠΈλ‘œ μ‚¬μš©ν•  수 μžˆλ„λ‘ 도움이 λ˜μ—ˆμœΌλ©΄ ν•˜λŠ”μ μ΄ μ΄λ ‡κ²Œ μƒˆλ‘œ λ§Œλ“€κ²Œλœ 큰 μ΄μœ μ΄κΈ°λ„ ν•˜λ‹€.

λ””μžμΈ μž‘μ—…

μ–΄λ– ν•œ μš”μ†Œλ“€κ³Ό κΈ°λŠ₯듀을 λ§Œλ“€μ–΄μ•Όν• μ§€ μ •ν•˜κ³ λ‚˜μ„œ λ””μžμΈ 단계에 λ“€μ–΄κ°”λ‹€.
λ‹€λ₯Έ 에디터듀은 μ›Œλ‚™ λͺ¨μ–‘이 μ’‹μ§€ λͺ»ν•΄μ„œ 쑰금만 λ…Έλ ₯ν•˜λ©΄ 쒀더 λ‚˜μ•„μ§€κ² μ§€ ν•˜λŠ” 생각이 μ‰½κ²Œ λ“€μ—ˆλ‹€. ν•˜μ§€λ§Œ λ””μžμΈ μž‘μ—…κ³Όμ •μ€ λΉΌλ‘˜μˆ˜κ°€ μ—†μ—ˆλ‹€.

json-editor-v1-003.webp

figma λ””μžμΈνˆ΄λ‘œ UIλ₯Ό λ§Œλ“€κΈ° μ‹œμž‘ν–ˆλ‹€.
이전버전을 μ°Έκ³ ν•΄μ„œ 기초적인 ν˜•νƒœλ₯Ό κ΅¬μ„±ν•˜κ³  νƒ€μž…μš”μ†Œλ₯Ό 쒀더 λΆ€κ°μ‹œμΌ°λ‹€. νƒ€μž…μ€ λˆˆμ—λ„λŠ” μš”μ†Œμ΄κΈ° λ•Œλ¬Έμ— μ»¨ν…μŠ€νŠΈλ₯Ό μ—΄ 수 μžˆλŠ” λ²„νŠΌμœΌλ‘œ μ‚¬μš©ν•  수 μžˆκ² λ‹€κ³  μƒκ°ν–ˆλ‹€.
데이터가 μ–Όλ§ˆλ“ μ§€ λ§Žμ•„μ§ˆ 수 있고, 컨트둀 λ””λ°”μ΄μŠ€λŠ” 마우슀 ν¬μΈν„°λ‘œ μ •ν•œ μƒνƒœμ΄κΈ° λ•Œλ¬Έμ— μš”μ†Œλ“€μ„ λ„‰λ„‰ν•˜κ²Œ λ°°μΉ˜ν•˜λŠ”κ²ƒ λ³΄λ‹€λŠ” μ˜€λ°€μ‘°λ°€ν•˜κ²Œ λͺ¨μ•„두어야 ν•œλ‹€. κ·ΈλŸ°λ‹€κ³  μš”μ†Œλ“€μ„ λ„ˆλ¬΄ 뢙이면 클릭에 λΆˆνŽΈν•¨μ„ λ§Œλ“€ 수 μžˆλŠ”μ μ„ μ‘°μ‹¬ν–ˆλ‹€.

json-editor-v1-004.webp

UIλ₯Ό λ§Œλ“€λ©΄μ„œ 심볼도 같이 λ§Œλ“€μ—ˆλ‹€.
μ œλŒ€λ‘œ 둜고λ₯Ό λ§Œλ“€μ§€λ„ λͺ»ν•˜λŠ”λ°λ„ λ‚΄κ°€ λ§Œλ“œλŠ” ν”„λ‘œκ·Έλž¨μ€ λ‘œκ³ λ„ 직접 λ§Œλ“€μ–΄μ•Όκ² λ‹€λŠ” 버릇 λ•Œλ¬ΈμΈμ§€ μžμ—°μŠ€λŸ½κ²Œ μŠ€μΌ€μΉ˜λΆκ³Ό μΌλŸ¬μŠ€νŠΈλ ˆμ΄ν„°λ₯Ό μ—΄κ³  κ°„λ‹¨ν•˜κ²Œ λ§Œλ“€μ–΄λ³Έλ‹€.

색은 기본적으둜 λ¬΄μ±„μƒ‰μœΌλ‘œ μ •ν•˜κ³  νƒ€μž…λ§Œ 컬러λ₯Ό ꡬ뢄을 λ’€λ‹€. νƒ€μž…μ— λ”°λ₯Έ ꡬ뢄을 μ˜μ–΄ μ΄λ‹ˆμ…œ 뿐만 μ•„λ‹ˆλΌ μ»¬λŸ¬μ—λ„ κ°œμ„±μžˆκ²Œ λ§Œλ“€μ–΄ μ‰½κ²Œ μ•Œμ•„λ³Ό 수 μžˆλ„λ‘ μ •ν•΄λ³Έλ‹€.

ν”„λ‘œκ·Έλž¨ μž‘μ—…λ‹¨κ³„

λ¦¬μ„œμΉ˜λ₯Ό ν•˜κ³  svelteμ—μ„œ μ›Ή μ»΄ν¬λ„ŒνŠΈλ‘œ λ§Œλ“€μ–΄λ‚Ό 수 μžˆλ‹€λŠ” κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ svelte μ»΄ν¬λ„ŒνŠΈλ‘œ 퍼블리싱뢀터 일뢀 κΈ°λŠ₯μž‘μ—…κΉŒμ§€ μ§„ν–‰ν•΄λ³΄μ•˜λ‹€.
진행쀑 λΉŒλ“œν•˜λ©΄μ„œ μš©λŸ‰μ„ μ²΄ν¬ν•΄λ³΄λ‹ˆ 생각 μ΄μƒμœΌλ‘œ μš©λŸ‰μ΄ 많이 λ‚˜μ˜€λŠ”κ±Έ 확인할 수 μžˆμ—ˆλ‹€. μ΄λŸ°μ μ€ νŽΈν•¨μ— λŒ€ν•œ λŒ€κ°€λΌκ³  λŠλ‚€λ‹€. (항상 μ‰½κ²Œ λ§Œλ“€μ–΄λ‚Ό 수 μžˆλŠ” 도ꡬ듀은 그에 μƒμ‘ν•˜λŠ” λŒ€κ°€λ₯Ό 치λ₯Έλ‹€.)

svelte μ»΄ν¬λ„ŒνŠΈλ‘œ λ§Œλ“€κΈ° ν¬κΈ°ν•˜κ²Œ ν•œ κ³„κΈ°λŠ” 데이터 바인딩 방식 λ•Œλ¬Έμ΄λ‹€.
react둜 μ‹œμž‘λœ μžλ°”μŠ€ν¬λ¦½νŠΈ ν”„λ‘œκ·Έλž¨ 방식은 데이터에 맞좰 μœ μ—°ν•˜κ²Œ μ»΄ν¬λ„ŒνŠΈλ“€μ΄ λ Œλ”λ§λ˜λŠ” λͺ¨μŠ΅μœΌλ‘œ ν‘œν˜„λœλ‹€.
μ„€κ³„λœ μ»΄ν¬λ„ŒνŠΈλΌλŠ” νŒŒμ΄ν”„μ—λ‹€ λ°μ΄ν„°λΌλŠ” 물을 ν˜λ €λ„£λŠ” λ°©μ‹μœΌλ‘œ κ΅¬μ„±λ˜κΈ° λ•Œλ¬Έμ— ν•˜μœ„ μžμ‹ 값을 λ³€κ²½ν•˜λ©΄ λ Œλ”λ§ 과정이 λ‹€μ‹œ μΌμ–΄λ‚˜κΈ° λ•Œλ¬Έμ— ꡬ쑰가 κ³Όλ„ν•˜κ²Œ λ³΅μž‘ν•΄μ§€κ³  연산이 많이 μΌμ–΄λ‚ κ±°λΌλŠ” μ˜ˆμƒμ΄ λ“€μ–΄ 데이터와 관계없이 dom으둜만 μ»¨νŠΈλ‘€ν•˜κ³  데이터λ₯Ό λ½‘μ•„λ‚Όλ•Œ dom을 μ „λΆ€ 돌렀보고 결과물을 λ…ΈμΆœν•΄λ‚΄λŠ” λ°©μ‹μœΌλ‘œ λ§Œλ“€μžκ³  방식을 λ°”κΎΈμ—ˆλ‹€.

json-editor-v1-005.webp

ν”„λ‘œκ·Έλž¨ ꡬ성을 계속계속 κ³ λ―Όν•˜λ‹€κ°€ 이전 λ²„μ „μ˜ λ°©μ‹μœΌλ‘œ λ˜λŒμ•„μ™”λ‹€.
잘 κ΅΄λŸ¬κ°€λ©΄ 그만이고 μ΅œμ‹  기술이라고 κ³Όλ„ν•˜κ²Œ ꡬ쑰 자체λ₯Ό λ³΅μž‘ν•˜κ²Œ λ§Œλ“œλŠ”κ²ƒλ³΄λ‹€λŠ” λ‚˜μ•˜λ‹€.

μ²˜μŒμ—λŠ” μ›Ή μ»΄ν¬λ„ŒνŠΈ 클래슀둜 λ§Œλ“€λ‹€κ°€ 막상 λ§Œλ“€κ³ λ³΄λ‹ˆ μ›Ή μ»΄ν¬λ„ŒνŠΈκ°€ μ•„λ‹ˆκ³  일반 클래슀둜 λ§Œλ“€μ–΄μ„œ 일반적으둜 μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©ν•˜κ±°λ‚˜ μ›Ή μ»΄ν¬λ„ŒνŠΈλ‘œ λ§Œλ“€κ±°λ‚˜ react μ»΄ν¬λ„ŒνŠΈ 래퍼둜 λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•˜κ²Œ ν•˜λŠ”κ²ƒμ΄ 쒋을거 κ°™μ•˜λ‹€.

dom μ»¨νŠΈλ‘€ν• λ•Œ μ‘°μž‘μ— 번거둭고 μž‘μ—… 속도가 λŠλ €μ„œ jquery 같은 λΌμ΄λΈŒλŸ¬λ¦¬κ°™μ€κ±Έ μ‚¬μš©ν•˜κΈ°λ‘œ ν–ˆλ‹€.
μ΄λ²ˆμ—λŠ” μ™ΈλΆ€μ—μ„œ λ”°λ‘œ λΆˆλŸ¬μ˜€λŠ”κ²Œ μ•„λ‹ˆκ³  내뢀에 같이 μ‚½μž…ν•΄μ„œ μ‚¬μš©ν•˜κΈ°λ‘œ ν•˜μ—¬ μš©λŸ‰μ΄ μž‘κ³  μ‹¬ν”Œν•œκ²Œ ν•„μš”ν–ˆλ‹€. μ˜ˆμ „μ— jquery같은 κΈ°λŠ₯을 ν•œ μš©λŸ‰μ΄ μž‘μ€κ±Έ 본적이 μžˆμ–΄μ„œ μ°Ύμ•„λ³΄λ‹ˆ cash-domμ΄λΌλŠ”κ²Œ μžˆμ–΄μ„œ μ‚½μž…ν•˜μ—¬ μ΄μš©ν–ˆλ‹€.

json-editor-v1-006-1.webp

UI μž‘μ—…κ³Ό κΈ°λŠ₯μž‘μ—…, 배포에 λŒ€ν•œ μ€€λΉ„κΉŒμ§€ μ‹œκ°„μ„ λ“€μ—¬ λ§Œλ“€λ©΄μ„œ μ–ΌμΆ” λ‹€ λ§Œλ“€μ–΄κ°€λŠ” μ‹œκΈ°μ— web component, react, vue, svelte μ»΄ν¬λ„ŒνŠΈλ‘œ λ°”λ‘œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λΉŒλ“œν•  μ€€λΉ„λ₯Ό ν•˜κ³  μžˆλŠ”λ° κ΄€λ¦¬ν•΄μ•Όν•˜λŠ” 점이 κ°λ‹΄μ•ˆλ κ±° 같은 예감이 λ“€μ–΄μ„œ λ”± 라이브러리만 μ œκ³΅ν•˜κΈ°λ‘œ ν–ˆλ‹€.

마무리

ν”„λ‘œκ·Έλž¨ μžμ²΄λŠ” λ‹€ λ§Œλ“€κ³  κΈ°λŠ₯을 μˆ˜μ •ν•˜λ©΄μ„œ 주둜 λ¬Έμ„œμž‘μ—…μ— μ‚Όλ§€κ²½μ΄μ—ˆλ‹€.

일단 readmeμ—μ„œ μ‚¬μš©λ²•κ³Ό ν•„μš”ν•œ μ˜΅μ…˜λ“€, λ©”μ„œλ“œ, 이벀트 뢀뢄듀에 λŒ€ν•œ μ„€λͺ…을 적어넣고 μœ„ν‚€μ—λ‹€ web component, react, vue, svelte μ»΄ν¬λ„ŒνŠΈλ‘œ λ§Œλ“œλŠ” 방법듀을 데λͺ¨λ₯Ό λ§Œλ“€μ–΄λ³΄κ³  μƒμ„Έν•˜κ²Œ μž‘μ„±ν•΄λ³΄μ•˜λ‹€. λ‚˜ν•œν…Œ ν•„μš”ν• μ§€λ„ λͺ¨λ₯΄λ‹ˆκΉ..

λ§ˆμ§€λ§‰μœΌλ‘œ npm νŒ¨ν‚€μ§€λ‘œ νΌλΈ”λ¦¬μ‹±ν•˜κ³  μ‘°κΈˆμ”© λ³΄μΆ©ν•˜κ³  λ³΄μ™„ν•΄κ°€λ©΄μ„œ 1.0.0 λ²„μ „μ˜ μ œμž‘μ„ λλƒˆλ‹€.

κ½€ μ‹ κ²½μ¨μ„œ UIλ₯Ό λ§Œλ“€μ—ˆλŠ”λ° 이것을 κ΄€λ¦¬μž ν™”λ©΄κ°™μ€κ³³μ—μ„œ μ‚¬μš©ν•  μƒκ°ν•˜λ‹ˆ μƒλ‹Ήνžˆ κΈ°λŒ€λœλ‹€!

메타데이터

쑰회수
1176
μ’‹μ•„μš”
0