dev-writeup-2024 / march

개발 1일 1글 스터디
2 stars 0 forks source link

[03-05] HTMX vs React 완벽 비교 ! #10

Open chouung opened 8 months ago

chouung commented 8 months ago

여기저기서 HTMX가 보이고 들려서 읽어본 아티클~

HTMX vs React: A Complete Comparison

원문 : HTMX vs React: A Complete Comparison - Semaphore

htmx docs

HTMX

HTMX React
개발 Big Sky Software Meta
오픈소스
GitHub stars 29k+ 218k+
크기 2.9 kB 6.4 kB
문법 custom attributes가 추가된 HTML기반 자바스크립트의 확장 버전인 JSX 기반
러닝커브 준수하다 험하다
기능 AJAX 요청 및 기타 사소한 기능 Composability, 단방향 데이터 바인딩, 상태 관리, 훅 등 다양한 기능
성능 굿 굿, 특히 대규모 앱이나 복잡한 웹 애플리케이션에서 유용함
Integration 기존 HTML 페이지에 임베드 가능 기존 HTML 페이지에 임베드는 가능하지만 주로 자바스크립트 기반 프로젝트에 사용된다.
커뮤니티 작지만 성장 중 업계 최대 규모
Ecosystem 매우 작다 매우 풍부하다

React를 쓰기까지: jQuery 부터 Modern Web Frameworks 까지

  1. jQuery : 웹 개발 초창기에는 개발자들이 AJAX 요청, DOM 조작 및 이벤트 처리를 처리하기 위해 jQuery에 의존
  2. Angular, React, Vue : 온라인 애플리케이션은 더욱 현대적이고 체계적이며 확장 가능한 형태로 발전
  3. React : 컴포넌트 기반 아키텍처를 도입하여 웹 개발 생태계가 완전히 변함
    • UI와 단방향 데이터 흐름에 대한 선언적 접근 방식 → 웹 개발을 간소화하여 재사용성과 유지보수성을 높임

HTMX를 쓰기까지: Web Frameworks 부터 다양한 Modern HTML 까지

  1. Angular, React, Vue : 구조화된 애플리케이션을 구축하는데 유용하지만 단순한 것이 필요한 개발자에게는 큰 부담
  2. HTMX : React와 같이 최신 상호작용을 위한 경량 솔루션이지만 통합이 간단하고 jQuery와 같이 오버헤드가 없다. 자바스크립트의 사용을 최대한 줄일 수 있다.

HTMX: A New, Modern Approach to Interactivity

AJAX Request Triggers

<div hx-get="/users">
    Show Users
</div>

Query Parameters and Body Data

HTMX가 쿼리 파라미터와와 body 데이터를 설정하는 방식은 HTTP 요청 유형에 따라 다르다.

AJAX Result Handling

HTMX는 AJAX 요청을 트리거한 element의 내부 HTML을 서버에서 반환한 HTML 콘텐츠로 바꾼다.

hx-swaphx-target 속성을 사용하여 이 동작을 사용자 정의할 수 있다.

<!-- /tasks 엔드포인트에 POST 요청 -> 서버에서 반환한 HTML을 .todo-list 요소에 추가 -->
<button 
  hx-post="/tasks"
  hx-swap=".todo-list" 
  hx-target="afterend"
>
  Add task
</button>

HTMX vs React: 두개의 웹 기술 비교

접근성

성능

사용성

그래서 뭘 쓰라구요 ?

후기

svelte의 경량화 버전인가..싶기도 한 HTMX ! 근데 아무래도 비교 대상은 React보다 좀 더 가벼운 프로젝트를 대상으로 하는 astro나 svelte같은 애들이 좀 더 적합하지 않나 싶습니다.

snaag commented 8 months ago

문법이 상당히 신기하네여!! 확실히 글 내용 처럼 간단한 수준의 페이지를 구현하는데는 좋을 것 같네여. 간단한 싸프를 생각중인데 함 써볼게여! 좋은내용 감사합니당. 그런데 유지보수가 넘 빡셀거같아용~~ 👀👀👀

chouung commented 8 months ago

@snaag 진짜진짜 간단한 페이지 아니면 퍼블리셔 혹은 백엔드를 위한게 아닐까.. 같은 생각이 듭니다..