HTMX: 가볍고 종속성이 없기 때문에 초기 페이지 로딩이 빠르고 클라이언트 측 처리가 줄어든다. 일반적으로 HTMX는 간단한 상호 작용이 있는 애플리케이션에서 사용하기 좋다.
React: 많은 자바스크립트를 포함하기 때문에 네트워크 사용률과 클라이언트 측 렌더링 시간이 길어진다. 하지만 가상 DOM과 효율적인 Diffing Algorithm을 통해 React는 UI를 신속하게 업데이트할 수 있으므로 대규모 애플리케이션에 적합하다.
사용성
HTMX: 전체 프론트엔드 프레임워크의 모든 고급 기능이 필요하지 않은 경우 가볍고 효율적인 옵션이다. 백엔드 개발자에게도 추천한다.
React: 풍부한 사용자 경험을 제공하거나 복잡한 상태를 처리해야 하는 SPA에 가장 적합하다. 그리고 UI 컴포넌트를 재사용하려는 대규모 팀에도 적합하다. React에서 HTMX로 마이그레이션하면 코드베이스가 67% 더 작아질 수 있지만, React까지 필요 없는 간단한 어플리케이션인 경우에만 이를 추천한다.
그래서 뭘 쓰라구요 ?
React : 상태 관리가 필요하고 복잡한 기능을 제공하며 재사용 가능한 컴포넌트가 필요한 웹 애플리케이션을 구축해야 할 때 권장
HTMX : 단순한 상호 작용과 특별한 고급 기능이 없는 사이트를 구축해야 할 때 권장
후기
svelte의 경량화 버전인가..싶기도 한 HTMX ! 근데 아무래도 비교 대상은 React보다 좀 더 가벼운 프로젝트를 대상으로 하는 astro나 svelte같은 애들이 좀 더 적합하지 않나 싶습니다.
htmx.org는 CDN으로 사용을 권장하는 것 같습니다. 필요한 파일만 불러올 경우 70 byte입니다. 정말 가볍긴 합니다!
npm으로 설치할 경우 node_modules/htmx.org/dist/htmx.js 를 불러서 사용하라고 하네요.
여기저기서 HTMX가 보이고 들려서 읽어본 아티클~
HTMX vs React: A Complete Comparison
원문 : HTMX vs React: A Complete Comparison - Semaphore
htmx docs
HTMX
React를 쓰기까지: jQuery 부터 Modern Web Frameworks 까지
HTMX를 쓰기까지: Web Frameworks 부터 다양한 Modern HTML 까지
HTMX: A New, Modern Approach to Interactivity
AJAX Request Triggers
hx-get
지정된 URL로 GET 요청hx-post
지정된 URL로 POST 요청hx-put
지정된 URL로 PUT 요청hx-patch
지정된 URL에 PATCH 요청hx-delete
지정된 URL에 DELETE 요청Query Parameters and Body Data
HTMX가 쿼리 파라미터와와 body 데이터를 설정하는 방식은 HTTP 요청 유형에 따라 다르다.
hx-get
은 AJAX 요청에 쿼리 파라미터를 자동으로 포함하지 않는다.hx-get
에 전달된 URL에 파라미터를 지정해야 한다.<form>
인 경우<form>
이 아닌 경우<form>
으로 둘러싸인 모든 입력값이 포함된다.element
에value
attribute가 있는 경우 해당 속성이 body에 사용된다.hx-include
attribute를 사용한다.hx-params
attribute를 사용하여 일부 본문 매개변수를 필터링할 수 있다.htmx:configRequest
이벤트 핸들러를 작성하여 본문 정의 로직을 작성할 수도 있다.AJAX Result Handling
HTMX는 AJAX 요청을 트리거한 element의 내부 HTML을 서버에서 반환한 HTML 콘텐츠로 바꾼다.
hx-swap
및hx-target
속성을 사용하여 이 동작을 사용자 정의할 수 있다.hx-swap
서버에서 반환된 HTML로 수행할 작업을 정의한다.hx-target
CSS selector를 사용하여 선택한 요소에swap
로직을 적용하도록 HTMX에 지시한다.HTMX vs React: 두개의 웹 기술 비교
접근성
HTML : HTML을 확장하여 마크업으로 서버와 직접 상호 작용할 수 있는 기능을 제공. 단순성, 간결성, 가독성을 우선시
React : JSX로 작성된 재사용 가능한 컴포넌트를 기반으로 사용자 인터페이스를 구축하기 위한 모든 기능을 갖춘 JavaScript 라이브러리
성능
사용성
그래서 뭘 쓰라구요 ?
후기
svelte의 경량화 버전인가..싶기도 한 HTMX ! 근데 아무래도 비교 대상은 React보다 좀 더 가벼운 프로젝트를 대상으로 하는 astro나 svelte같은 애들이 좀 더 적합하지 않나 싶습니다.