- Datastar는 간단한 정적 웹사이트부터 실시간 협업 웹앱까지 구축할 수 있는 경량 프레임워크로, HTML에 하나의 스크립트 태그만 추가해 시작 가능
- 백엔드 중심 인터랙티브 UI를 만들 수 있도록 HTML을 확장하는 하이퍼미디어 퍼스트(hypermedia-first) 접근 방식을 채택함
- htmx처럼 백엔드 반응성을 제공하면서도, Alpine.js처럼 프론트엔드 반응성도 지원하며 npm 패키지나 의존성 없이 동작함
- 프론트엔드에서는 표준
data-*속성으로 반응형 동작을 구현하고, 백엔드에서는 이벤트로 DOM 수정 및 상태 변경을 수행함 - SSE(Server-Sent Events) 기반의 실시간 업데이트와 다양한 언어용 SDK 제공으로, 백엔드 주도형 리액티브 웹앱 개발의 단순화를 목표로 함
Datastar 개요
- Datastar는 HTML을 확장하는 하이퍼미디어 기반 프레임워크로, 백엔드에서 직접 DOM을 조작해 실시간 인터랙티브 웹앱을 구현할 수 있는 구조임
- 브라우저 측에서는 단 10.7KB짜리 스크립트를 로드하는 것으로 모든 기능이 활성화되며, 빌드 도구나 프레임워크 설치가 불필요함
- Hypermedia Systems의 원칙을 계승하여 서버가 UI의 상태를 주도하고, 클라이언트는 이를 반응적으로 반영함
- 데이터 갱신, 상태 변경, DOM 패칭(patching) 을 백엔드 이벤트로 처리함으로써 프론트엔드 로직을 최소화함
설치 방법
- 가장 간단한 방법은 CDN을 통해 다음과 같이 스크립트를 추가하는 것임
-
<script type="module" src="https://cdn.jsdelivr.net/gh/starfederation/[email protected]/bundles/datastar.js"></script>
-
- 또는 직접 파일을 다운로드하거나 Datastar bundler를 사용해 자체 번들을 생성할 수도 있음
- npm 설치나 Node 환경 설정이 전혀 필요하지 않음
data-* 속성과 반응성
- 핵심은 HTML의
data-*속성을 통해 선언적으로 동작을 정의하는 것- 예:
data-on-click="alert('Hello!')"
- 예:
-
data-on속성은 특정 이벤트 발생 시 실행할 Datastar 표현식을 지정하며, 여기서 일반 JavaScript도 사용 가능함 - 전용 VSCode 확장과 IntelliJ 플러그인을 통해 자동완성과 문법 지원 기능을 제공함
백엔드 주도형 DOM 패칭
- Datastar는 서버가 프론트엔드를 주도하는 방식으로 동작함
- 서버가 HTML 조각을 전송하면 Datastar가 이를 morphing 전략으로 DOM에 병합함
- morphing은 변경된 부분만 업데이트하여 상태를 유지하고 성능을 개선함
- 예시:
서버에서 HTML 조각을 응답하면 Datastar가 자동으로<button data-on-click="@get('/endpoint')">Open the pod bay doors, HAL.</button> <div id="hal"></div>id="hal"요소를 교체함
Server-Sent Events (SSE) 기반 스트리밍
-
서버는
datastar-patch-elements이벤트를 전송하여 실시간으로 DOM을 갱신할 수 있음 -
다음 예시는 HAL의 대사를 출력 후 1초 뒤에 다시 초기화하는 예임
event: datastar-patch-elements data: elements <div id="hal">I’m sorry, Dave. I’m afraid I can’t do that.</div> event: datastar-patch-elements data: elements <div id="hal">Waiting for an order...</div> -
이를 지원하기 위해 Datastar는 다양한 언어용 SDK를 제공함:
- Clojure, C#, Go, Java, Kotlin, PHP, Python, Ruby, Rust, Node.js
- 각 SDK는
PatchElements나ServerSentEventGenerator클래스를 통해 DOM 패칭 이벤트를 송출함
Datastar Inspector 및 도구
- 브라우저의 개발자 도구 외에도 Datastar Inspector를 이용해 SSE 이벤트를 시각적으로 확인할 수 있음
- 공식 문서 외에도 AI 생성 딥위키, LLM용 코드 샘플, 단일 페이지 문서 등 풍부한 자료 제공
결론
- Datastar는 HTML 중심의 하이퍼미디어 애플리케이션 개발을 단순화하는 최신 접근법
- 기존의 SPA 프레임워크보다 가볍고, 백엔드와 프론트엔드의 균형 잡힌 반응형 개발 경험을 제공
- 실시간 스트리밍, 서버 중심 UI 제어, 의존성 없는 배포가 필요한 프로젝트에 적합