A Real World React -> htmx Port

Carson Gross

이둠적으둜 REST와 HATEOAS에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ±°λ‚˜ ν•˜μ΄νΌλ―Έλ””μ–΄ 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ²˜λ₯Ό μ„€λͺ…ν•˜λŠ” 것도 μ’‹μ§€λ§Œ, κ²°κ΅­ μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œ μ€‘μš”ν•œ 것은 μ‹€μš©μ„±μž…λ‹ˆλ‹€: μ‹€μ œλ‘œ μž‘λ™ν•˜λŠ”κ°€? 그리고 그것이 κ°œμ„ μ„ κ°€μ Έμ˜€λŠ”κ°€?

htmxκ°€ _μž‘λ™ν•œλ‹€_λŠ” 것은 μš°λ¦¬κ°€ 자체 μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œ μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— ν™•μ‹€ν•˜κ²Œ 말할 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ htmxκ°€ λ‹€λ₯Έ μ ‘κ·Ό 방식보닀 _κ°œμ„ _된 것인지 λ§ν•˜κΈ°λŠ” μ–΄λ ΅μŠ΅λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ htmxκ°€ react 같은 λ‹€λ₯Έ 방법과 λΉ„κ΅ν•΄μ„œ μ–΄λ–»κ²Œ μž‘λ™ν• μ§€μ— λŒ€ν•œ 비ꡐ가 이루어진 적이 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

μ§€κΈˆκΉŒμ§€λŠ”μš”.

David Guillotκ°€ Contexteμ—μ„œ DjangoCon 2022μ—μ„œ β€œThe Mother of All htmx Demos”라 λΆˆλ¦¬λŠ” μ‹œμ—°μ„ μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€:

μ‹€μ œ SaaS μ œν’ˆμ—μ„œ Reactμ—μ„œ htmx둜: μš°λ¦¬κ°€ ν•΄λƒˆκ³ , 정말 λ©‹μ‘ŒμŠ΅λ‹ˆλ‹€!

μš°λ¦¬λŠ” 큰 결단을 내리고, SaaS μ œν’ˆμ˜ 2λ…„κ°„μ˜ React UI μž‘μ—…μ„ κ°„λ‹¨ν•œ Django ν…œν”Œλ¦Ώκ³Ό htmx둜 λͺ‡ 달 λ§Œμ— κ΅μ²΄ν–ˆμŠ΅λ‹ˆλ‹€. 이 κ²½ν—˜μ„ ꡬ체적인 μ§€ν‘œμ™€ ν•¨κ»˜ κ³΅μœ ν•˜κ³ , λ‹Ήμ‹ μ˜ CTOλ₯Ό 섀득해 λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€!

#λΉ„λ””μ˜€

전체 ν”„λ ˆμ  ν…Œμ΄μ…˜μ„ μ—¬κΈ°μ—μ„œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€ (κΌ­ 보셔야 ν•©λ‹ˆλ‹€!):

#μš”μ•½

#뢄석

이 μˆ«μžλ“€μ€ λˆˆμ— λ„λŠ” 성과이며, Contexte μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν•˜μ΄νΌλ―Έλ””μ–΄μ— 맀우 μ ν•©ν•˜λ‹€λŠ” 사싀을 λ°˜μ˜ν•©λ‹ˆλ‹€. μ΄λŠ” ν…μŠ€νŠΈμ™€ 이미지λ₯Ό 많이 ν‘œμ‹œν•˜λŠ” μ½˜ν…μΈ  μ€‘μ‹¬μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. λͺ¨λ“  μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ΄λŸ¬ν•œ 숫자λ₯Ό 보일 것이라고 κΈ°λŒ€ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ λ§Žμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹œμŠ€ν…œμ˜ μΌλΆ€μ—μ„œ ν•˜μ΄νΌλ―Έλ””μ–΄/htmx μ ‘κ·Ό 방식을 μ±„νƒν•¨μœΌλ‘œμ¨ 극적인 κ°œμ„ μ„ κΈ°λŒ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

#개발 νŒ€ ꡬ성

포트 μž‘μ—…μ΄ νŒ€ ꡬ쑰에 미친 영ν–₯을 κ°„κ³Όν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€. Contexteκ°€ Reactλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ—ˆμ„ λ•Œ, λ°±μ—”λ“œμ™€ ν”„λ‘ νŠΈμ—”λ“œ 간에 λͺ…ν™•ν•œ 뢄리가 μžˆμ—ˆκ³ , 두 λͺ…μ˜ κ°œλ°œμžλŠ” μ „μ μœΌλ‘œ λ°±μ—”λ“œ μž‘μ—…μ„, ν•œ λͺ…μ˜ κ°œλ°œμžλŠ” μ „μ μœΌλ‘œ ν”„λ‘ νŠΈμ—”λ“œ μž‘μ—…μ„, 그리고 ν•œ λͺ…μ˜ κ°œλ°œμžλŠ” β€œν’€μŠ€νƒβ€ μž‘μ—…μ„ μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

(μ—¬κΈ°μ„œ β€œν’€μŠ€νƒβ€œμ€ ν”„λ‘ νŠΈμ—”λ“œμ™€ λ°±μ—”λ“œ μž‘μ—… λͺ¨λ‘λ₯Ό νŽΈν•˜κ²Œ μˆ˜ν–‰ν•  수 있으며, λ”°λΌμ„œ 전체 β€œμŠ€νƒβ€œμ—μ„œ κΈ°λŠ₯을 μ™„μ „νžˆ λ…λ¦½μ μœΌλ‘œ κ°œλ°œν•  수 μžˆλŠ” 개발자λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.)

htmx둜 ν¬νŠΈν•œ ν›„μ—λŠ” νŒ€ 전체가 β€œν’€μŠ€νƒβ€ κ°œλ°œμžκ°€ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 각 νŒ€μ›μ΄ 더 효과적이 되고 더 λ§Žμ€ κ°€μΉ˜λ₯Ό μ œκ³΅ν•  수 있게 ν•˜λ©°, 개발이 더 μ¦κ±°μ›Œμ§€κ³ , κ°œλ°œμžκ°€ 전체 κΈ°λŠ₯을 μ†Œμœ ν•  수 있게 λ§Œλ“­λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ, μ†Œν”„νŠΈμ›¨μ–΄ μ΅œμ ν™”λ₯Ό 더 잘 μˆ˜ν–‰ν•  수 있으며, κ°œλ°œμžκ°€ μŠ€νƒμ˜ μ–΄λŠ 뢀뢄이든 μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•  수 있기 λ•Œλ¬Έμ— λ‹€λ₯Έ κ°œλ°œμžμ™€μ˜ 쑰율이 ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

#μŠ¬λΌμ΄λ“œ

ν”„λ ˆμ  ν…Œμ΄μ…˜μ˜ μŠ¬λΌμ΄λ“œλŠ” μ—¬κΈ°μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€ (ν›Œλ₯­ν•œ λ°œν‘œμžμ˜ λ…ΈνŠΈλ₯Ό κΌ­ ν™•μΈν•˜μ„Έμš”!).

https://docs.google.com/presentation/d/1jW7vTiHFzA71m2EoCywjNXch-RPQJuAkTiLpleYFQjI/edit?usp=sharing

</>