오늘의 주제
Introduction to HTMX
요즘 프론트엔드 프레임워크 / 라이브러리
Introduction to HTMX
... 그런데 HTMX는 좀 이상하다
Introduction to HTMX
백문이 불여일견
Introduction to HTMX
수많은 의문점들
Introduction to HTMX
우선, React가 프론트엔드의 유일한 솔루션일까요?
... 아닐수도요!
Introduction to HTMX
Introduction to HTMX
시연영상도 감명깊으니 보시는걸 추천 드립니다
Introduction to HTMX
HTMX에 대한 제 생각은...
1. 상태관리 (State Management) 에 대한 최적의 솔루션이다.
2. Javascript에서 벗어나려는 최근의 시도중 가장 성공적이다.
3. Server - Client의 관계를 다시 생각해볼 수 있게 해주는 고마운 라이브러리 (백엔드 개발자로써!)
프론트엔드 생태계의 역사 (상태관리 측면에서)
State란 무엇일까요? (프론트 개발자 분들에게)
프론트엔드 생태계의 역사 (상태관리 측면에서)
State란 무엇일까요? (백엔드 개발자 분들에게)
애초에 백엔드에서 State 라는 용어를 쓰나요?
프론트엔드 생태계의 역사 (상태관리 측면에서)
그건 아니지만, 제 생각은 이렇습니다...
"클라이언트는 서버가 가지고 상태의 반영이다"
Todo List 코드를 보면서 같이 생각해볼까요?
프론트엔드 생태계의 역사 (상태관리 측면에서)
아주아주 오래전, 호랑이가 담배피던 시절...
프론트엔드 생태계의 역사 (상태관리 측면에서)
그때 그 시절의 웹 애플리케이션 VS 현대의 웹 애플리케이션
프론트엔드 생태계의 역사 (상태관리 측면에서)
여러분들께 질문 :
클라이언트와 서버의 State가 독립된 형태가 최적의 솔루션일까요?
프론트엔드 생태계의 역사 (상태관리 측면에서)
... 그럴수도 있고, 아닐수도 있습니다.
프론트엔드 생태계의 역사 (상태관리 측면에서)
첨언: NextJS는 PHP를 꿈꾸는가?
프론트엔드 생태계의 역사 (상태관리 측면에서)
첨언: JSON API는 Restful 하지 않습니다
...라고 REST API를 고안하신 이 아저씨가 말씀하셨어요.
프론트엔드 생태계의 역사 (상태관리 측면에서)
Roy Fielding 아저씨와 REST API에 관한 좋은 글
HTMX: 상태관리를 위한 최적의 솔루션?
HTMX 팀의 모토 : 타도 javascript
javascript fatigue:
longing for a hypertext
already in hand
피곤한 자바스크립트
하이퍼텍스트의 갈망
이미 내 손안에
HTMX: 상태관리를 위한 최적의 솔루션?
우리는 아마 반성해야 할지도...
HTMX: 상태관리를 위한 최적의 솔루션?
제가 생각하는 HTMX의 의의
HTMX: 상태관리를 위한 최적의 솔루션?
HATEOS?
HATEOS : Hypermedia as engine of application state
하이퍼미디어를 애플리케이션의 상태로 가져가는 것
처음 고안한 사람:
히히 또 나지롱
HTMX: 상태관리를 위한 최적의 솔루션?
HTMX와 HATEOS가 좋은건 알겠다. 그런데...
HTMX: 상태관리를 위한 최적의 솔루션?
하지만 JSX 만큼 Type-safe 하지도, 편하지 않은걸요...
저는 templ 이라는 라이브러리를 많이 사용합니다.
HTMX: 상태관리를 위한 최적의 솔루션?
자료조사 해보니까 Java/Kotlin 진영에도...
HTMX를 사용하면서 느꼈던 점들
1. 상태관리에 관한 방법을 다시 생각해야만 했습니다.
2. 에러핸들링은 어떻게 처리해야 할까요?
3. HTMX는 모든 요청을 서버에서 처리해야 하나요?
HTMX를 사용하면서 느꼈던 점들
잠시동안만 유지되는 DOM 조작마저 서버 요청으로 넘겨야 하나?
HTMX를 사용하면서 느꼈던 점들
HTMX에는 Extension이 많이 존재합니다.
그 중 눈여겨 볼것은 alpine-morph
HTMX를 사용하면서 느꼈던 점들
Alpine JS
HTMX와 비슷하지만, 로컬 State를 저장할 수 있다는 큰 장점이 있어요.
alpine-morph는 여기에서 영감받은 Extension!
HTMX를 사용하면서 느꼈던 점들
2. 에러핸들링은 어떻게 처리해야 하나요?
response-targets
요청의 HTTP Status에 따라 타겟 범위를 다르게 지정 할 수 있습니다.
HTMX를 사용하면서 느꼈던 점들
2. 에러핸들링은 어떻게 처리해야 하나요?
swap 방식을 다르게 해서 타겟을 지정해야 한다면...
<body hx-boost="true" hx-ext="multi-swap">
<!-- simple example how to swap #id1 and #id2 from /example by innerHTML (default swap method) -->
<button hx-get="/example" hx-swap="multi:#id1,#id2">
Click to swap #id1 and #id2 content
</button>
<!-- advanced example how to swap multiple elements from /example by different swap methods -->
<a
href="/example"
hx-swap="multi:#id1,#id2:outerHTML,#id3:beforeend,#id4:delete"
>Click to swap #id1 and #id2, extend #id3 content and delete #id4 element</a
>
<div id="id1">Old 1 content</div>
<div id="id2">Old 2 content</div>
<div id="id3">Old 3 content</div>
<div id="id4">Old 4 content</div>
</body>
마무리
최근 들어서 이런 생각이 들었습니다.
"React나 Spring 같이
시장을 점령한 기술들이 꼭 유일한 솔루션일까"
마무리
물론 취업, 이직을 위해서라지만...
마무리
1996년에 만들어진 Space-jam 웹사이트
저는 이 사이트를 보고 감명을 많이 받았습니다.
마무리
1996년에 만들어진 Space-jam 웹사이트
1. 27년 된 웹사이트가 모던 웹 브라우저에서 아직도 잘 작동한다는 점
2. 종속성을 가지지 않은 웹 애플리케이션은 생명이 길고, 유지보수가 쉽다는 점
마무리
하지만 요즘은....
마무리
개발자들 사이에서 이런 격언이 있다고 합니다.
Don't be a frameworker.
마무리
HTMX에 더 많은 관심이 생기셨다면...
마무리
HTMX에 더 많은 관심이 생기셨다면...
QnA