[Web] HTML ๋ง๊ณ HTMX(HyperText Markup eXtension)
์นํ์ด์ง๋ฅผ ๋ง๋๋ ค๋ฉด ๋ฐ๋์ ๋ฐฐ์์ผ ํ๋ ์ธ์ด ์ค ํ๋๊ฐ ๋ฐ๋ก HTML(HyperText Markup Language)์ ๋๋ค. HTML์ ํฐ ํ๋ฉด์ ํ ์คํธ(๊ธ์)๋ฅผ ํ๊ธฐํ๋ ๋งํฌ์ ์ธ์ด ์ค ํ๋๋ก ๊ณผ๊ฑฐ HTTP ํต์ ์ ์ด์ฉํ์ฌ ํฐ ํ ์คํธ ํ์ผ์ ์ฃผ๊ณ ๋ฐ๋๋ฐ ์ฌ์ฉ๋์๋ ํ์ค ์ธ์ด์์ต๋๋ค.
ํ์ง๋ง ํ๋์๋ ํ ์คํธ๋ณด๋ค ๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ด๋ฅผํ ๋ฉด ํ ์คํธ ๋ณด๋ค๋ ์ด๋ฏธ์ง, ๋น๋์ค, ์ ๋๋ฉ์ด์ ๋ฑ ๋์ ์ธ ์ปจํ ์ธ ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ๋ฅผ ์ํ์ฌ ์ดํ HTML 5 ๋ฒ์ ์์๋ ์ด๋ฏธ์ง, ๋น๋์ค ์ ์ก์ ์ํ ํ์ค ํ๊ทธ๊ฐ ์ ์๋์์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ , ํ์ด์ง์ ๋ ๋ง์ ํจ๊ณผ๋ฅผ ์ฃผ๊ธฐ ์ํด Javascript, jQuery ๋ฑ์ ์ฌ์ฉํ๊ธฐ๋ ํ์ฃ . ํ์ง๋ง ์ด๋ค์ ๋๋ฌด ๋ฐฐ์ฐ๊ธฐ ์ด๋ ต๊ณ ๋ฌด๊ฑฐ์์ ์ ๋ฌธ์ ์ผ๋ก ๋ฐฐ์ฐ์ง ์์ผ๋ฉด ์ฌ์ฉํ๊ธฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๊ฐ๋จํ ์นํ์ด์ง, ๋ฐฑ์คํผ์ค๋ฅผ ๋ง๋๋๋ฐ, SPA๊ฐ ํ์ํ ๊น?
์ต๊ทผ์ ๋ด๊ฐ ๋ฌด์ธ๊ฐ ํํ์ด์ง๋ฅผ ๋ง๋ค๊ฒ ๋ค๊ฑฐ๋, ์๋๋ฉด ํ์ฌ ๋ฐฑ์๋ ์์ง๋์ด์ธ๋ฐ, ์๋ฒ ์ ์ง๋ณด์๋ฅผ ์ํ ๋ฐฑ์คํผ์ค ๋ด์ง๋ ์ด๋๋ฏผ์ ๊ฐ๋ฐํ๊ณ ์ ํ๋๋ฐ React.js, Vue.js ๋ฑ ๋ง์ด ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ง ํ๋ ์์ํฌ๋ฅผ ์๊ฐํ๊ณค ํฉ๋๋ค. ํ์ง๋ง ๋ง์ ์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฐฑ์คํผ์ค๋ฅผ ๊ฐ๋ฐํ๋ฉด '์ด๋ฌํ ํ์ด์ง๋ฅผ ๋ง๋๋๋ฐ ๊ตณ์ด ์ด๋ฐ ๋ณต์กํ ๊ฐ๋ ๋ค์ด ํ์ํ๊ฐ?' ๋ผ๊ณ ํ ๋ฒ ์ฏค์ ์๊ฐํด๋ณธ ์ ์ด ์์ผ์ ๋ถ๋ค์ด ๊ณ์ค ๊ฒ๋๋ค. ๋ณดํต ์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก SPA๋ฅผ ๋ฐฐ์ฐ๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ ๊ธฐ์ ๊ฐ๋ ์ ์ตํ๊ฒ ๋ฉ๋๋ค.
- ์ํ ๊ด๋ฆฌ ํจํด
- Virtual DOM
์ด๋ค์ด ์๊ฒจ๋ ๋ฐฐ๊ฒฝ์ ํ๋์ ํ์ด์ง์ ๋ด์ ์ ์๋ ์ปจํ ์ธ ์ ํ๊ณ์ ์ด ์กด์ฌํ๋ฉฐ ์ฌ๋ฌ ํ์ด์ง๋ฅผ ๋๋ด์ง๋ง ์ด๋ ์ ์ง๋ณด์๊ฐ ๋ถํธํ๊ณ ๊ฐ๋ฐ์ ์ด๋ ค์์ ์ด๋ํ๋ฏ๋ก ํ๋์ ํ์ด์ง์ ์ต๋ํ ๋ง์ ์ปจํ ์ธ ๋ฅผ ๋ด๋ ๊ฒ์ด ๋ชฉ์ ์ด๊ณ , ์ฌ์ฉ์(User)์๊ฒ ๋น ๋ฅธ ์ธํฐ๋ ์ ์ ์ ๊ณตํด์ฃผ๊ธฐ ์ํจ์ด๋ผ๋ฉด ๊ทธ ๋ชฉ์ ์ ๋ถํฉํฉ๋๋ค. ํ์ง๋ง ๋ฐฑ์คํผ์ค๋ ์ด๋๋ฏผ ๊ฐ์ด ์ด๋ฏธ ๊ทธ ์ปจํ ์ธ ์์ด ์ ํด์ ธ ์๋ ์นํ์ด์ง์ ๊ฒฝ์ฐ์๋ ์ด๋ฌํ ์คํ์ ์ฌ์ฉํด์ผ ํ ์ด์ ๊ฐ ์๊ฒ ์ฃ .
HTMX
HTMX๋ HTML ์ธ์ด์์ ๊ฐ๋จํ attribute ์ถ๊ฐ๋ง์ผ๋ก AJAX, CSS Transition, Websocket, HTTP ํต์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋จํ ์นํ์ด์ง ๋ด์ง ๋ฐฑ์คํผ์ค๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด ์ํ ๊ด๋ฆฌ ํจํด ๋ฑ๊ณผ ๊ฐ์ ๋ณต์กํ ๊ธฐ์ ์ ๋ฐฐ์ฐ์ง ์๊ณ ๋ ํ ํ๋ฆฟ ์์ง๊ณผ HTMX๋ง ์๋ค๋ฉด ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด์ฃ .
HTMX๋ HDA(Hypermedia Driven Application) ๊ธฐ๋ฐ์ ๊ฐ๋ฐ ๋ฐฉ์์ผ๋ก ๊ธฐ์กด์ MPA์ SPA์์ ๋ ๋์ UX๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํ์๋์์ต๋๋ค. SPA์์๋ ๊ฐ๋จํ HTML ํ์ผ ํ ๊ฐ์ ์ฌ๋ฌ Javascript, Typescript ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ํ ํ์ด์ง์ ๋ณด๋ค ๋ง์ ์ปจํ ์ธ ๋ฅผ ๋ฃ๊ณ ๊ตฌ์ฑํ์ฌ ๋ ๋๋ง ์๊ฐ์ ์ค์ด๋ ๋ฑ์ ์ฅ์ ์ ๋ณด์๊ณ , MPA์์๋ ์ฌ๋ฌ HTML ํ์ผ์ ํตํด ๊ฐ ํ์ด์ง๋ณ๋ก ์๋ก ๋ค๋ฅธ ์ปจํ ์ธ ๋ฅผ ๊ฐ๋ฐํ์ฌ ๊ฐ๋ฐ ์ฉ์ด์ฑ์ ๋์์ต๋๋ค.
HDA๋ ์น์ ๊ธฐ์กด HTML ๊ธฐ๋ฅ์ ํ์ฅํ์ฌ ํ์ดํผ๋ฏธ๋์ด ๊ฐ๋ฐ์๊ฐ ๋ ๊ฐ๋ ฅํ ํ์ดํผ๋ฏธ๋์ด ์ค์ฌ์ ์ธ ์ํธ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๋ฐ๋ผ์ HTMX๋ HTML์ ์ด์ฉํ์ฌ ๊ฐ๋ฅํํ ๋ง์ ๊ธฐ๋ฅ(AJAX ๋ฑ)์ ๊ตฌํํ๋๋ก ํ๊ณ , ๊ฐ๋ฅํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
HDA
์ฐ๋ฆฌ๊ฐ ๊ธฐ์กด MPA, SPA๋ฅผ ์ด์ฉํด ๊ฐ๋ฐ์ ํ์ ๋๋ JSON ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์ด๋ฅผ ๋ค์ ๋ ๋๋งํ๋ ๊ณผ์ ์ ๊ฑฐ์ณค์ต๋๋ค. ๊ทธ๋ฌ๋ HDA๋ REST ๊ฐ๋ ์ ๋ฐ๋ผ ๋ ๊ฐ์ง ์ ์ฝ ์กฐ๊ฑด์ ๊ฐ์ง๋๋ค.
- ๋ช ๋ นํ ์คํฌ๋ฆฝํ ์ด ์๋ ์ ์ธ์ HTML ๋ด์ฅ ๊ตฌ๋ฌธ ์ฌ์ฉ
- ๋นํ์ดํผ๋ฏธ๋์ด ํ์(JSON, XML ๋ฑ)์ด ์๋ ํ์ดํผ๋ฏธ๋์ด(HTML ๋ฑ)๋ก ์๋ฒ์ ์ํธ ์์ฉ
๋ฐ๋ผ์ HTMX๋ ๊ธฐ์กด์ SPA์ฒ๋ผ JSON์ผ๋ก ์๋ฒ์ ํต์ ํ ๋ค ์ด๋ฅผ HTML๋ก ํํํ๋ ๊ฒ์ด ์๋ ๋ฐ๋ก ์๋ฒ์์ HTML ๊ตฌ๋ฌธ์ ๋ฐ์์ ์น ํ์ด์ง๋ฅผ ๊ฐ๋ฐํจ์ผ๋ก์จ ๋ช ๋ นํ ์คํฌ๋ฆฝํ ์ด ์๋ ์ ์ธ์ ์ธ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฐ๋ น ์๋ฅผ ๋ค๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ก์ ์ ์ทจํ์ ๋ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ "Clicked"๋ก ์ค๋ค๊ณ ๊ฐ์ ํ์ ๋ HTMX๋ ์๋ฒ ํต์ ๋์ ์ ์ ๋ฉ์ถ ํ, ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์์ ๋ ๋ฒํผ์ด ์ฌ๋ผ์ง๊ณ Clicked๊ฐ ๋๋๋ฐ, ์ด๋ฌํ ์ก์ ๋ค์ด ์ ๋ถ HTML์์ ์ด๋ค์ง๊ฒ ๋ฉ๋๋ค.
HTMX ์์ง์ด Web Application Server๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด ์๋ฒ๋ HTML ์ฝ๋๋ก ์๋ตํฉ๋๋ค. HTMX๋ ์๋ต ๋ฐ์ HTML ์ฝ๋๋ฅผ DOM์ ์ฝ์ ํ๋ ์ญํ ์ ํ๋ ๊ฒ์ด ๋ฐ๋ก HDA ์ ๋๋ค.
์ด๋ฌํ HDA ์คํ์ผ์ ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ๋ฟ ์์ผ๋ฉฐ ๊ทธ ์ค์์๋ HTMX์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด HDA ์ ๊ทผ์ ๋ณด์ํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋์ ๊ฐ์ต๋๋ค.
- https://hyperscript.org
- https://alpinejs.dev/
- http://vanilla-js.com/ (embedded directly in HTML)
๋ง์น๋ฉฐ..
ํน์๋ผ๋ ๊ฐ๋จํ ์นํ์ด์ง, ๋ฐฑ์คํผ์ค ๊ฐ๋ฐ์ SPA๋ฅผ ๊ณ ๋ คํ๊ณ ์๊ณ , ๊ทธ๋ค์ ๋์ ๋ฌ๋ ์ปค๋ธ์ ๋ถ๋ด์ ๊ฐ์ง๊ณ ์๋ค๋ฉด HTMX๋ ๊ทธ์ผ๋ง๋ก ์ต๊ณ ์ ์ ํ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ ๊ฐ์ง ๋ฌธ์ ํ์ผ์ ๋ง์ ์ปจํ ์ธ ๋ฅผ ํ์๋ก ํ์ง ์๊ณ , ์ด๋ฏธ ๊ทธ ์ปจํ ์ธ ๋ ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ฒ๋ค๊ฐ ์ด ๋ชจ๋ ๊ฒ์ ์ ์ธ์ ๊ตฌ๋ฌธ์ผ๋ก ๋ค ๋๋.. ์ข์ง ์์ ์๊ฐ..
๋ค์ ํฌ์คํธ์์๋ ์ค์ ๋ก HTMX๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
'Programming > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Web] Dropbox / Adobe Photoshop API๋ก ์ด๋ฏธ์ง ๋ฐฐ๊ฒฝ ์ง์ฐ๊ธฐ (0) | 2021.05.16 |
---|---|
์์ ์ Tistory ๋ธ๋ก๊ทธ ๊ฒ์์ ์์ฑ ์ธ์ ๊ธฐ๋ฅ์ ๋ฃ์ด๋ณด์. (1) | 2017.07.13 |
Google Web Designer 1.0 Beta (0) | 2013.10.02 |