์ ๋ htmx๋ฅผ ํ๋์ ์ง์ผ๋ณด์ ์์ต๋๋ค. ์ฒ์์๋ ์ฝ๊ฐ ์๊ธฐ๊ฑฐ๋ ๋ฏผ๋งํ ๋ฐ์ฒ๋ผ ๋๊ปด์ก๊ณ , ์ค์ ์น ๊ฐ๋ฐ ์์ ์์์ ์ฝ๋ฏนํ ํด์์ผ๋ก ์ฌ๊ฒจ์ก์ต๋๋ค. ์๋ฅผ ๋ค์ด React Server Components, Svelte Runes ๋ฐ Signals๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์ค์ ๋ก ๊ธฐ์ ์ ์ต์ฒจ๋จ์ ๋ฐ๊ณ ๋๊ฐ๋ ์์ ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๋ถํํ๋, 2023๋ ์ค๋ฐ์ ์ด๋ฅด๋ฌ ์ด๋ค ์ด์ ๋ก ์ฌ๋๋ค์ htmx๋ฅผ ์ง์งํ๊ฒ ๋ฐ์๋ค์ด๊ธฐ ์์ํ์ต๋๋ค. ์ด๋ ์น ๊ฐ๋ฐ์ ๋ฏธ๋์ ๋ํด ๊น์ ์ฐ๋ ค๋ฅผ ๋ถ๋ฌ์ผ์ผํค๋ ๋งค์ฐ ์ฌ๊ฐํ ์ฌํ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ง ์ด๋ฐ ์ฐ๋ ค๋ฅผ ๊ฐ์ง ๊ฒ์ด ์๋๋๋ค. ์ฌ๊ธฐ์์ htmx์ ๋ํ ํ๋ฅญํ ๋นํ์ ์ฝ์ด๋ณด์ธ์:
๊ธฐ๋ณธ์ ์ผ๋ก ๊ทธ๋ค์ ์์ ์ ๋ฌด์ง๋ฅผ ์์ ํ ๋๋ฌ๋ด๊ณ , ์์ ๋ค์ด ํด๋ธ ๊ฒ์ ๋ํด ๊ทผ๊ฑฐ ์๋ ์ฅ์ ์ ๋ถ์ฌํ๋ฉฐ, ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ๋ํด ์นญ์ฐฌํด ์ฃผ๊ธฐ๋ฅผ ๋ฐ๋๋ค.
์ ๋ง ์ ํํ ๋ง์ ๋๋ค. ์ ๋ง, ์ ๋ง ์ ํํฉ๋๋ค.
๋ถํํ๋, ๊ทธ ํ๋ฅญํ ๋งค์ฒด ๊ฒ์๋ฌผ์ ์ธ์ด๋ ํ๋ฌธ์ ์ด๋ฉฐ, ์ด๋ก ์ ์ธ HTML์ ๋ํ ํํํ ์ดํด๊ฐ ์๋ค๋ฉด ๊ทธ ๊ธ์ ๋ ์ค์ํ ์์ ๋ค์ ์ผ๋ฐ ์น ๊ฐ๋ฐ์์๊ฒ๋ ์ดํด๋์ง ์์ ๊ฒ์ ๋๋ค.
๊ทธ๋์ ์ด ๊ธฐ์ฌ์์๋ htmx๊ฐ ์ ๋ณ๋ก์ธ์ง๋ฅผ ํ๋ฒํ ์น ๊ฐ๋ฐ์๋ฅผ ์ํด ์ฝ๊ฒ ์ค๋ช ํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ฐ์ , htmx์ ์ฝ๋๋ฅผ ์ดํด๋ณด์ธ์.
๊ทธ๋ค์ var
๋ฅผ ์ฌ๊ธฐ์ ๊ธฐ์ ์ฌ์ฉํ๊ณ , ๊ฑฐ์ ์ต์ JavaScript ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ
(์๋
ํ์ธ์, htmx ์ฌ๋๋ค, ๋ชจ๋์ ๋ํด ๋ค์ด๋ณด์
จ๋์?), window
๋ค์์คํ์ด์ค๋ฅผ ์ค์ผ์ํค๊ณ ์์ต๋๋ค.
์ต์ ์ธ ๊ฒ์, ์ด ์ฝ๋๊ฐ ๊ทธ์ ํ๋์ ๊ฑฐ๋ํ JavaScript ๋ฉ์ด๋ฆฌ๋ผ๋ ์ ์ ๋๋ค! ํ์ผ ํ๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ์ ํ ๋ถํด๋์ง ์์์ต๋๋ค. ๋ง์ฝ ์ด ์ฌ๋์ด ์ ๊ฐ MSU์์ ๊ฐ๋ฅด์น๋ ์์ ์ ๋ค์๋ค๋ฉด, ์ ๋ ์ด ์ฌ๋์ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ์ ๋ํ ์์ ํ ์คํด ๋๋ฌธ์ ๋์ ์์ผฐ์ ๊ฒ์ ๋๋ค. ์ด๋ ์ปดํจํฐ ๊ณผํ์ ์ ๊ณตํ ์ ์ ์์ด๋ผ๋ฉด ๋๊ตฌ๋ ์ดํดํ ์ ์์ด์ผ ํ๋ ๊ฒ์ ๋๋ค.
์ข์ ์ํํธ์จ์ด๋ ๊น๋ํ ์ฝ๋์์ ์์๋๋ฉฐ, ์ด ์ฝ๋๋ ๋งค์ฐ ์ง์ ๋ถํฉ๋๋ค.
๋ค์์ผ๋ก ๋ฌธ์ ๊ฐ ๋๋ ๊ฒ์ ๋น๋ ๋จ๊ณ์ ๋ถ์ฌ์ ๋๋ค. htmx๋ ์ ํต์ ์ธ ๋น๋ ๋จ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ ๋ฟ๋ง ์๋๋ผ, JavaScript ์ปค๋ฎค๋ํฐ๊ฐ ๋๋ฆฌ๊ณ ์๋ ์ด์ ์ ์ค์ค๋ก ๋ฐํํ๊ณ ์์ต๋๋ค. ๊ทธ๋ค์ ์ฌ์ง์ด ์ด๋ฅผ ์๋์ค๋ฝ๊ฒ ์ฌ๊ธฐ๊ณ ์์ต๋๋ค!
๊ทธ๋ฆฌ๊ณ ๋ ๋์ ์ ์ด ์์ต๋๋ค.
์์ธํ ์ดํด๋ณด๋ฉด, ๊ทธ๋ค์ด ๋น๋ ๋จ๊ณ๊ฐ ์๋ค๊ณ ์ฃผ์ฅํ๋ฉด์๋ ์ฌ์ค์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ทธ์ ์์ ๋ค์ด ์์ฑํ ์์์ ์ธ bash ์คํฌ๋ฆฝํธ์ผ ๋ฟ์ ๋๋ค.
์๊ธฐ๊ณ ๋ ๋ถ์ ์งํฉ๋๋ค. ๋ถ๋๋ฌ์ด ์ผ์ ๋๋ค.
์ด๋ฐ ํ๋ก์ ํธ์ TypeScript๋ฅผ ์ฌ์ฉํ๋ ๋ช ๋ฐฑํ ์ด์ ์๋ ๋ถ๊ตฌํ๊ณ , ์ ์๋ค์ ์ด๋ฅผ ๊ณ ์ง์ค๋ฝ๊ฒ ์ฌ์ฉํ์ง ์๊ณ ์์ต๋๋ค. ์ด ์ค ์ผ๋ถ๋ ๋น๋ ๋จ๊ณ์ ๋ํ ๋นํฉ๋ฆฌ์ ์ธ ๋ฐ๋(๊ทธ๋ค์ ์ฌ์ค ๋น๋ ๋จ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง!) ๋๋ฌธ์ด์ง๋ง, ๋ ๋ค๋ฅธ ์ด์ ๋ โ๋๋ฒ๊น ๊ฐ๋ฅํ ์์ค ์ฝ๋๋ฅผ ์ ๊ณตโํ๊ฒ ๋ค๋ ๋ง๋ ์ ๋๋ ์ฝ์ ๋๋ฌธ์ ๋๋ค. ๋ฌผ๋ก , JavaScript ๊ฐ๋ฐ์๋ผ๋ฉด ๋๊ตฌ๋ ์๋ฏ์ด, TypeScript๋ ์๋ฒฝํ๊ฒ ๋๋ฒ๊น ๊ฐ๋ฅํ ์์ค ๋งต์ ์ง์ํฉ๋๋ค. ์ด ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ ์ ์๋ค์ ์ฌ์ ํ ๊ตฌ์ JavaScript ๋ฒ์ ์ ๊ณ ์งํ๋ฉฐ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค.
์ด๋ค์ด ์๋ชป๋์์์ ๋ฌต์์ ์ผ๋ก ์ธ์ ํ๋ฉฐ, ์ด์ JSDoc ์ฃผ์์ ์ฝ๋๋ฒ ์ด์ค์ ์ถ๊ฐํ๊ธฐ ์์ํ์ต๋๋ค (์ฌ๊ธฐ์ โ์ฝ๋๋ฒ ์ด์คโ๋ผ๋ ๋ง์ ๋์จํ๊ฒ ์ฌ์ฉํฉ๋๋ค). ์ด ๋ชจ๋ ๊ฒ์ ์ฒ์๋ถํฐ ํ๋์ ์ด๊ณ ๋ชจ๋ํ๋ TypeScript๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋์ , ์๋ชป๋ ์ ํ์ ๋ณด์ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
๊ทธ๋๋ง ๋คํ์ธ ์ ์ ์ ์ด๋ ์ด๋ค์ ์ ๋ฐ ์ ๋ ๊ด์ฐฎ์ ํ ์คํธ ์ค์ํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ ์ฝ๋๋ฒ ์ด์ค์ ์ํ๋ฅผ ๊ณ ๋ คํ๋ฉด ๋น์ฐํ ๊ทธ๋์ผ ํฉ๋๋ค!
์ด์ htmx ์ฝ๋๋ฒ ์ด์ค ์์ฒด์ ์ฃผ์ (ํ์ง๋ง ๊ฒฐ์ฝ ๋ชจ๋ ๊ฒ์ ์๋๋๋ค!) ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ์์ผ๋, ๋ ์ผ๋ฐ์ ์ธ htmx์ ๋ฌธ์ ๋ก ๋์ด๊ฐ ๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ๋์ ๋๋ ๋ฌธ์ ๋ ์ ์๋ค์ด ๋๋ค์ ์๋์ค๋ฌ์ํ๋ ๊ฒ ์ค ํ๋์ ๋๋ค: ํ์ดํผ๋ฏธ๋์ด๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฌ์ค ์ด๊ฒ์ ๋จ์ํ โHTML์ ์ฌ์ฉํ๋คโ๋ ๋ง์ ์ฐ์ํ ํํ์ผ ๋ฟ์ ๋๋ค. ์ ๊ทธ๋ค์ด ๋ค๋ฅธ ํผ๋์ค๋ฌ์ด ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์ด์จ๋ ๊ทธ๋ ์ต๋๋ค.
์, ๋ง์ฝ ๋์น์ฑ์ง ๋ชปํ์ จ๋ค๋ฉด, HTML์ ์ด์ 30๋ ์ด ๋์์ต๋๋ค. ์์ฃผ ์ค๋๋ ๊ธฐ์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋์๊ฐ, ์ฐ๋ฆฌ๋ ์ด ์ฌ๋๋ค์ด ์ถ์ฒํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๋ง์ ๊ฒฝํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. htmx๊ฐ ์๋ก์ด ๊ฒ์ ํ๋ ๊ฒ์ ์๋๋๋ค: intercooler.js, PJax ๋ฐ Unpoly (htmx๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค, ์ฐธ๊ณ ๋ก)๋ ์ด๋ฏธ ์ค๋์ ๋ถํฐ ์กด์ฌํด์์ต๋๋ค.
๊ทธ ์ด์ ์๋ jquery.load()
๋ผ๋ ๊ฒ์ด ์์์ต๋๋ค.
๋ค์์ 2008๋ ์ jQuery ์ฝ๋์ ๋๋ค:
$( "#result" ).load( "ajax/test.html" );
๊ทธ๋ฆฌ๊ณ ์ด์ htmx ์ฌ๋๋ค์ด ์ ๊ณตํ๋ ํ์ ์ ์ธ ์ฝ๋๋ฅผ ๋ณด์ธ์:
<button hx-get="/ajax/test.html"
hx-target="#result">
Load
</button>
์์ฐ. ๋๋๊ตฐ์.
์๊ธฐ์ง ์์๋ค๋ฉด ์ ๋ง ํ๊ฐ ๋ ๋ปํ์ต๋๋ค.
htmx๋ฅผ ์ฌ์ฉํ์ง ๋ง์์ผ ํ ๋ ๋ค๋ฅธ ์ด์ ๋ ์ฌ์ฉํ ์ ์๋ ์ปดํฌ๋ํธ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. React๋ฅผ ์ ํํ๋ฉด MUI, NextUI ๋ฐ Chakra์ ๊ฐ์ ๊ฒ๋ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
htmx์์๋โฆ ์๋ฌด๊ฒ๋ ์์ต๋๋ค. ์ํ๋ ์ปดํฌ๋ํธ๋ฅผ ์ง์ ์ฐพ์์ htmx์ ์ด๋ฒคํธ ๋ฑ์ ํตํด ํตํฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ด์ผ ํฉ๋๋ค.
์ ๋ง๋ก lit๊ณผ ๊ฐ์ ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์์๋ด๊ณ , ๊ทธ๊ฒ์ htmx์ ํตํฉํ๋ ๋ฐฉ๋ฒ๊น์ง ์๊ฐ์ ์ฐ๊ณ ์ถ์ต๋๊น? ์ ํ ๋ง์ด ๋์ง ์์ต๋๋ค. ํตํฉ๋, ์ฆ์ ์ฌ์ฉํ ์ ์๋ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๋ ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๋ซ์ต๋๋ค.
htmx๋ฅผ ํผํด์ผ ํ ๋ ๋ค๋ฅธ ์ฃผ์ ์ด์ ๋ ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ํ ๊ฐ์ ๋ถํ ์ ์ ๊ฑฐํ๋ค๋ ์ ์ ๋๋ค. ๊ทธ๋ค์ ์ฌ์ง์ด ํ์ฌ๊ฐ React์์ htmx๋ก ์ ํํ์ ๋ ์ด๋ฅผ ์ฅ์ ์ผ๋ก ์๋ํ๋ ํ์ด์ง๊น์ง ๊ฐ์ง๊ณ ์์ต๋๋ค.
ํ๋ก ํธ์๋/๋ฐฑ์๋ ๋ถํ ์ ๋ง์ ํ์ฌ์์ ๋งค์ฐ ์ฑ๊ณต์ ์ด์์ผ๋ฉฐ, ํ๋ก ํธ์๋ ์์ง๋์ด๊ฐ ์ข์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ตฌ์ถํ๋ ๋ฐ ์ง์คํ๊ณ , ๋ฐฑ์๋ ์์ง๋์ด๊ฐ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ณ์ธต์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ง๋๋ ๋ฐ ์ง์คํ ์ ์๊ฒ ํ์ต๋๋ค.
๋ฌผ๋ก , ๋ ํ ๊ฐ์ ์กฐ์จ์ ์ด๋ ค์์ด ์์ ๋๋ ์์ต๋๋ค. ๋ฐฑ์๋ ์์ง๋์ด๋ ํ๋ก ํธ์๋ ์์ง๋์ด๊ฐ ์๊ตฌ ์ฌํญ์ ๋๋ฌด ์์ฃผ ๋ณ๊ฒฝํ๋ค๊ณ ๋ถํํ๊ณ , ํ๋ก ํธ์๋ ์์ง๋์ด๋ ๋ฐฑ์๋ ์์ง๋์ด๊ฐ ๋๋ฌด ๋๋ฆฌ๊ฒ ์์ง์ธ๋ค๊ณ ๋ถํํฉ๋๋ค. ํ์ง๋ง GraphQL๊ณผ RSC์ ๊ฐ์ ๊ธฐ์ ์ด ์์ด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ํ์ฌ ๊ธฐ์กด์ ํ์ค ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ธ ๋ด์์ ํด๊ฒฐ๋ ๋ฌธ์ ์ ๋๋ค.
ํ๋ก ํธ์๋/๋ฐฑ์๋ ๋ถํ ์ ํนํ ๊ฐ๋ฐ ํ์ด ํ์ฅ๋จ์ ๋ฐ๋ผ ํ์ฌ์ ๋งค์ฐ ์ข์ ์กฐ์ง ๋ชจ๋ธ๋ก ์ ์ฆ๋์์ผ๋ฉฐ, ์ด๋ฅผ (์ด๋ฅธ๋ฐ) โํ์คํโ ๊ฐ๋ฐ๋ก ์ ํํ๋ ๊ฒ์ ์ํํ๊ณ , ์์งํ ๋งํด ์ด๋ฆฌ์์ ์ผ์ ๋๋ค.
ํ๋ก ํธ์๋/๋ฐฑ์๋ ๋ถํ ์ด ์ข์์ง ์๋์ง์ ๋ํ ๋ ผ์์ ์ฐจ์นํ๊ณ , ๋ฐฑ์๋ ์์ง๋์ด๊ฐ ์ฐ๋ ๊ธฐ ๊ฐ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ ๋ค๋ ๊ฒ์ ํ์คํ ๋งํ ์ ์์ต๋๋ค.
htmx ์น์ฌ์ดํธ๋ฅผ ๋ณด์ธ์. ์ธ๋ผ์ธ ์คํ์ผ, ํ
์ด๋ธ, ์ค๋ซ๋์ alt
์ค๋ช
์ด ์๋ ์ด๋ฏธ์ง ํ๊ทธ๊ฐ ์๋ฉ ์์ต๋๋ค.
HTML์ ์ฌ์ฉํ๋ผ๊ณ ๊ถ์ฅํ๋ ์ฌ๋๋ค๋ก๋ถํฐ ๋์จ ํํธ์๋ HTML์
๋๋ค!
์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ์ด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๋ ์ฌ๋๋ค์๊ฒ ๋งก๊ฒจ์ผ ํ๋ฉฐ, ์ค๋๋ ๊ทธ๋ฐ ์ฌ๋๋ค์ ๋๋ถ๋ถ ํ๋ก ํธ์๋ SPA ๊ฐ๋ฐ์๋ค์ ๋๋ค.
htmx๋ฅผ ์ฌ์ฉํ์ง ๋ง์์ผ ํ ๋ ๊ธฐ์ ์ ์ธ ์ด์ ๋ก, ๊ทธ๊ฒ์ ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ ๊ณต๊ฒฉ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ผ๋ จ์ ๋ณด์ ๋ฌธ์ ์ ๋ ธ์ถ๋ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ๋ htmx์ ์ค๊ณ์ ๊ทผ๋ณธ์ ์ผ๋ก ์์ต๋๋ค: ๊ทธ๊ฒ์ ๋งํฌ์ ์ ๋์์ ๋ฃ์ ์ ์๊ฒ ํ๊ณ , ์ฌ์ง์ด ๊ถ์ฅํ๊ธฐ๋ ํฉ๋๋ค. ๋ค์ ํ ๋ฒ ์ฐ๋ฆฌ๋ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ์ ๋ช ๋ฐฑํ ์๋ฐ์ ๋ณด๊ฒ ๋ฉ๋๋ค. ์น ๊ฐ๋ฐ์์ ๋งํฌ์ , ์คํ์ผ๋ง, ๋์์ ๊ฐ๊ฐ HTML, CSS ๋ฐ JavaScript ํ์ผ๋ก ๋ถ๋ฆฌํด์ผ ํ๋ค๋ ๊ฒ์ ์ค๋์ ๋ถํฐ ์๊ณ ์๋ ์ฌ์ค์ ๋๋ค.
์ด ๋ช ๋ฐฑํ๊ณ ์ ์๋ ค์ง ์ง๋ฆฌ๋ฅผ ์๋ฐํจ์ผ๋ก์จ, htmx๋ HTML์ ์ ์ ํ๊ฒ ์ ํํ์ง ์์ผ๋ฉด ๋ค๋ฅธ ์ฌ๋์ด ๊ทํ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ ์ฃผ์ ํ ์ ์๋ ์ทจ์ฝ์ฑ์ ์ ๊ณตํฉ๋๋ค.
๊ฐ๋ htmx ์ ์๋ โ๊ทธ๋ ๋ค๋ฉด href ์์ฑ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?โ์ ๊ฐ์ ๋๋ํ ์ฒํ๋ ๋๊ธ์ ๋ฌ๊ธฐ๋ ํ์ง๋ง, ๊ทธ๊ฑด ๋ถ๋ช ํ ๋ค๋ฆ ๋๋ค.
htmx๋ฅผ ์ฌ์ฉํ์ง ๋ง์์ผ ํ ๋ ๋ค๋ฅธ ์ค์ฉ์ ์ธ ์ด์ ๋ htmx ๊ด๋ จ ์ผ์๋ฆฌ๊ฐ ๊ฑฐ์ ์๋ค๋ ์ ์ ๋๋ค.
์ ๋ ๋ฐฉ๊ธ indeed์์ htmx ์ผ์๋ฆฌ๋ฅผ ๊ฒ์ํด ๋ณด์๊ณ , ์ด ๋ ๊ฐ์ ์ผ์๋ฆฌ๋ฅผ ์ฐพ์์ต๋๋ค: ํ๋๋ Microsoft, ๋ค๋ฅธ ํ๋๋ Oak Ridge National Laboratory์์์ ๋๋ค.
๋ฐ๋ฉด์ โreactโ๋ฅผ ๊ฒ์ํ๋ฉด 13,758๊ฐ์ ์ผ์๋ฆฌ๊ฐ ๋์ต๋๋ค.
์ง์งํ๊ฒ ๋งํ์๋ฉด, ์ด๋ค ๊ธฐ์ ์ ๊ฒฝ๋ ฅ์ ๊ฑธ๊ณ ์ถ์ต๋๊น?
์์ ๋ฌธ์ ์ ๋ค๋ฅธ ์ธก๋ฉด์ ํ์ฌ๋ผ๋ฉด, htmx ๊ฐ๋ฐ์๊ฐ ๊ฑฐ์ ์๋ค๋ ์ ์ ๋๋ค.
๋ชจ๋๊ฐ ๋ถํธ์บ ํ์ ๊ฐ์ React๋ฅผ ๋ฐฐ์๋๋ค. ๋ง์ฝ ์ฌ๋ฌ๋ถ์ ํ์ฌ๊ฐ ํฐ ์ง์ ํ์ ํ์๋ก ํ๊ฑฐ๋ (์ด์ฉ๋ฉด ํ์ฌ์ ๋์ ์ด์ง๋ฅ ์ด ์์ ์๋ ์๊ณ , ์ง์ ์๊ธ์ ๋ฎ์ถ๊ณ ์ถ์ ์๋ ์์ผ๋ฉฐ, ํ ์คํ ์์ง๋์ด์ ์์ ํ์ด ํ์ฌ ํ์ฅ์ ๋ฐฉํดํ ์๋ ์์ต๋๋ค), ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๋ ํฉ๋ฆฌ์ ์ ๋๋ค.
์ค๋๋ , ๊ทธ ๊ธฐ์ ์ React์ ๋๋ค.
๋ ๊ธฐ์ ์ ์ธ ์ธก๋ฉด์ผ๋ก ๋์๊ฐ์, htmx๋ฅผ ์ฑํํ๊ณ ๋ํ ๋ชจ๋ฐ์ผ ์ฑ์ด๋ ์ 3์๊ฐ ์ฌ์ฉํ API๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด, ํด๋น API๋ฅผ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ํฌ์ธํธ์ ์์ ํ ๋ณ๋๋ก ๋ง๋ค์ด์ผ ํ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ๋ค์ ํ๋ฒ, ๋ฏฟ์ ์ ์๊ฒ๋, htmx ์ฌ๋๋ค์ ์ด ์ฌ์ค์ ์๋ํฉ๋๋ค, ์ฌ๊ธฐ์๋ ์ค๋ณต ์์ ์ด ์๋ฐ๋๋ค๋ ์ ์ ์์ ํ ๋ฌด์ํ๊ณ ์์ต๋๋ค.
๋จ์ผ API๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ด ํจ์ฌ ๋ ํฉ๋ฆฌ์ ์ด๋ฉฐ, ๋จ์ผ ๋ฐฑ์๋ ํ์ด ๋ชจ๋ ์๊ตฌ ์ฌํญ์ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
์ด๋ ๋ช ๋ฐฑํ๋ฉฐ, ์์งํ ๋งํด ๋ ผ์์ ์ฌ์ง์กฐ์ฐจ ์๋ ๊ฒ์ ๋๋ค.
htmx์ ๋ ๋ค๋ฅธ ๊ธฐ์ ์ ๋ฌธ์ ๋ ๊ทธ๊ฒ์ด ํ์ฅ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์์ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์๋ํ ์ ์์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ปค์ง๋ฉด htmx ๋ชจ๋ธ์ ๋ฌด๋์ง๊ณ ์๋ง์ด ๋ฉ๋๋ค. React์ ๊ฐ์ ํ๋ก ํธ์๋ ๋๊ตฌ์ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ๋ชจ๋ ๊ฒ์ ๊ตฌํํํ๊ณ ํ ์คํธ ๊ฐ๋ฅํ๊ฒ ์ ์งํฉ๋๋ค. ์ด๊ฒ์ ํฐ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ๋ ๋ฐ ํจ์ฌ ๋ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
์๋ฅผ ๋ค์ด, Github์ htmx์ ๋งค์ฐ ์ ์ฌํ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ต๊ทผ React๋ฅผ ๋์ ํ๊ธฐ ์์ํ์ผ๋ฉฐ, ์ด์ ๋ณด๋ค ํจ์ฌ ๋ ์์ ์ ์ ๋๋ค. ์ฒ์๋ถํฐ React๋ก ์์ํ๊ณ ๋ชจ๋ ๊ฒ์ ํ๋์ ์ธ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๋ฐฉ์์ผ๋ก ๊ตฌ์ถํ๋ค๋ฉด ํจ์ฌ ๋ ๋์์ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๋ฆ๊ฒ๋ผ๋ ์ฌ๋ฐ๋ฅธ ์ ํ์ ํ๊ณ ์๋ ๊ฒ์ ๋คํ์ ๋๋ค. ๋ฆ๋๋ผ๋ ์ ํ๋ ๊ฒ๋ณด๋ค ๋ซ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์๋ง๋ htmx๋ฅผ ์ฌ์ฉํ์ง ๋ง์์ผ ํ ๊ฐ์ฅ ์ค์ํ ์ด์ ๋ ์ฐฝ์์๊ฐ ๋ถ๋ช ํ ์ ์ ์ด ์ด์ํ๋ค๋ ์ ์ ๋๋ค.
๊ทธ์ ํธ์ํฐ ํผ๋๋ฅผ ๋ณด์ธ์: ๋น์ ๋ฌธ์ ์ด๊ณ , ์ ์นํ๋ฉฐ, ๊ณ ์์ ์ผ๋ก ๋๋ฐ์ ์ ๋๋ค.
๋๋ ์์ ์ด ๋์ํ์ง ์๋ ์์ธ์ด๋ฅผ ์์ ์ ์ฌ์ดํธ์ ๊ฒ์ํ๋ ์ฌ์ค์ ๊ณ ๋ คํด ๋ณด์ธ์.
์์ธ์ด ํญ์๋ ๋ฐ ์น์ ์ด ์๋๋ฐ, ๋๋ถ๋ถ์ด ๋ฏผ๋งํ๊ณ ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์น์ฌ์ดํธ์ ์์ด์ผ ํ ๊ฒ์ด ์ ํ ์๋๋๋ค.
๊ทธ๋ ๋๊ตฌ๋ htmx์ CEO๊ฐ ๋ ์ ์๊ฒ ํ์ฌ LinkedIn์์ ๋งค์ฐ ๋ฏผ๋งํ ์ง์ฑ ๋ฐํ๋ฅผ ํ ์ ์๊ฒ ํฉ๋๋ค.
๋ฌด๋ถ๋ณํ ๊ด๋์ง์ ๋๋ค.
ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ ๋, ์ด๋ ์ ๋๋ ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์๋ฅผ ๋๋ฃ๋ก ์ ํํ๋ ๊ฒ์ ๋๋ค. ์ ๋ง๋ก ์ด ์ฌ๋๊ณผ ํจ๊ป ์ผํ๊ณ ์ถ์ต๋๊น?
์ ๋ ์ ๋ ๊ทธ๋ ๊ฒ ํ๊ณ ์ถ์ง ์์ต๋๋ค.
์ด ๊ธ์ ํตํด htmx ๋ฐ ํ์ดํผ๋ฏธ๋์ด๋ฅผ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํํ๋ ๊ฒ์ด ๊ทน๋๋ก ๋์ ์์ด๋์ด์ด๋ฉฐ, ์ด๋ ๋ชฌํ๋์์๋ง ๊ธฐ์ํ ์ ์์๋ ์๊ฐ์ด๋ผ๋ ๊ฒ์ ํ์ ์์ผ๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. โ์ด์ ๋๋ฌ๋คโ, โ๋ค์ ์์ํ๋คโ๋ ์์ ํ์๋ฆฌ, CEO ํ๋กํ๊ณผ ์ ์นํ ๋ฐ์ ๊ฐ์ง ํฌ๋ณด์ด์ ํฌ๊ฑธ์ ๋ง์ ๋ฃ์ง ๋ง์ธ์.
์ํํธ์จ์ด, ํนํ ํ๋ก ํธ์๋ ์ํํธ์จ์ด๋ ๋ฒ๋ฅ ๋ฐ ์ ์น์ ๊ฐ์ ๋ค๋ฅธ ๋งค์ฐ ์ฌ๊ฐํ๊ณ ์์ฐ์ ์ธ ํ๋๋งํผ์ด๋ ์ง์งํ ๋น์ฆ๋์ค๋ก ์ทจ๊ธ๋์ด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํ์ ๊ณผ ์ ๊ตํจ์ ์ค์ ์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์งํด์ผ ํ๋ฉฐ, ์ฐฝ์์๊ฐ ๋๋ถ๋ถ์ ์๊ฐ์ ํธ์ํฐ์ ๋ง๋ ์ ๋๋ ๊ฒ์ ์ฌ๋ฆฌ๋ ๊นจ์ง, ๊ณผ๊ฑฐ๋ฅผ ๋์๋ณด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์งํด์๋ ์ ๋ฉ๋๋ค.
์ด๊ฒ์ ์์์ ๋๋ค: htmx๋ ๋ณ๋ก์ ๋๋ค.