← 홈

🔗

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 DevOps & CLI
🍎
macOS DevOps & CLI
🏗️
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
Helm DevOps & CLI
🔨
Jenkins DevOps & CLI
🔥
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
💻
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁️
Azure CLI DevOps & CLI
☁️
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂️
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
🔢
NumPy 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

기초

설치

htmx 포함
<!-- CDN -->
<script src="https://unpkg.com/htmx.org@1.9.10"></script>

<!-- NPM -->
npm install htmx.org

<!-- ESM -->
import htmx from 'htmx.org';

핵심 속성

HTTP 요청
<!-- GET request -->
<button hx-get="/api/data">Load Data</button>

<!-- POST request -->
<form hx-post="/api/submit">
  <input name="email" type="email">
  <button type="submit">Submit</button>
</form>

<!-- PUT request -->
<button hx-put="/api/item/1">Update</button>

<!-- PATCH request -->
<button hx-patch="/api/item/1">Patch</button>

<!-- DELETE request -->
<button hx-delete="/api/item/1">Delete</button>

타겟팅

타겟 & 스왑

hx-target
<!-- Target by ID -->
<button hx-get="/data" hx-target="#result">Load</button>
<div id="result"></div>

<!-- Target selectors -->
hx-target="this"              <!-- Current element -->
hx-target="closest div"       <!-- Closest ancestor -->
hx-target="next .item"        <!-- Next sibling -->
hx-target="previous .item"    <!-- Previous sibling -->
hx-target="find .child"       <!-- Child element -->
hx-swap
<!-- Swap strategies -->
hx-swap="innerHTML"      <!-- Replace inner HTML (default) -->
hx-swap="outerHTML"      <!-- Replace entire element -->
hx-swap="beforebegin"    <!-- Insert before element -->
hx-swap="afterbegin"     <!-- Insert at start of element -->
hx-swap="beforeend"      <!-- Insert at end of element -->
hx-swap="afterend"       <!-- Insert after element -->
hx-swap="delete"         <!-- Delete element -->
hx-swap="none"           <!-- No swap -->

<!-- With modifiers -->
hx-swap="innerHTML swap:1s"      <!-- Wait 1s before swap -->
hx-swap="innerHTML settle:500ms" <!-- Settle delay -->
hx-swap="innerHTML scroll:top"   <!-- Scroll to top after swap -->

트리거

hx-trigger

이벤트 트리거
<!-- Default: click for buttons, submit for forms -->
<button hx-get="/api">Click me</button>

<!-- Custom events -->
hx-trigger="click"           <!-- On click -->
hx-trigger="mouseenter"      <!-- On hover -->
hx-trigger="keyup"           <!-- On keyup -->
hx-trigger="load"            <!-- On element load -->
hx-trigger="revealed"        <!-- When scrolled into view -->
hx-trigger="intersect"       <!-- Intersection observer -->

<!-- Modifiers -->
hx-trigger="click once"              <!-- Only once -->
hx-trigger="keyup changed delay:500ms" <!-- Debounce -->
hx-trigger="keyup throttle:500ms"     <!-- Throttle -->
hx-trigger="click from:body"         <!-- Event from body -->
hx-trigger="every 2s"                <!-- Polling -->
폼 트리거
<!-- Search as you type -->
<input type="search"
       name="q"
       hx-get="/search"
       hx-trigger="keyup changed delay:300ms"
       hx-target="#results">
<div id="results"></div>

<!-- Infinite scroll -->
<div hx-get="/items?page=2"
     hx-trigger="revealed"
     hx-swap="afterend">
  Loading more...
</div>

폼 처리

폼 제출
<!-- Basic form -->
<form hx-post="/api/users" hx-target="#message">
  <input name="name" required>
  <input name="email" type="email" required>
  <button type="submit">Create User</button>
</form>
<div id="message"></div>

<!-- Include extra values -->
<form hx-post="/submit" hx-vals='{"extra": "data"}'>
  ...
</form>

<!-- Include values from other elements -->
<form hx-post="/submit" hx-include="[name='csrf']">
  ...
</form>
<input type="hidden" name="csrf" value="token123">

인디케이터

로딩 상태

요청 인디케이터
<!-- Loading indicator -->
<button hx-get="/slow-request" hx-indicator="#spinner">
  Load Data
</button>
<span id="spinner" class="htmx-indicator">Loading...</span>

<style>
.htmx-indicator {
  display: none;
}
.htmx-request .htmx-indicator {
  display: inline;
}
.htmx-request.htmx-indicator {
  display: inline;
}
</style>

<!-- Disable button during request -->
<button hx-get="/api" hx-disabled-elt="this">
  Click me
</button>

헤더 & 검증

요청 설정

헤더
<!-- Add custom headers -->
<button hx-get="/api"
        hx-headers='{"X-Custom-Header": "value"}'>
  Load
</button>

<!-- Confirm before request -->
<button hx-delete="/item/1"
        hx-confirm="Are you sure?">
  Delete
</button>

<!-- Validation -->
<form hx-post="/submit"
      hx-validate="true">
  <input name="email" type="email" required>
  <button type="submit">Submit</button>
</form>
응답 헤더
<!-- Server can control htmx via headers -->
HX-Redirect: /new-page       <!-- Redirect -->
HX-Refresh: true             <!-- Refresh page -->
HX-Retarget: #other          <!-- Change target -->
HX-Reswap: outerHTML         <!-- Change swap -->
HX-Trigger: myEvent          <!-- Trigger event -->
HX-Push-Url: /new-url        <!-- Push to history -->

이벤트

JavaScript 이벤트

이벤트 처리
// Listen to htmx events
document.body.addEventListener("htmx:beforeRequest", (e) => {
  console.log("Request starting", e.detail);
});

document.body.addEventListener("htmx:afterSwap", (e) => {
  console.log("Content swapped", e.detail);
});

document.body.addEventListener("htmx:responseError", (e) => {
  console.log("Error", e.detail.xhr.status);
});

// Key events:
// htmx:configRequest - Before request is configured
// htmx:beforeRequest - Before request is sent
// htmx:afterRequest - After request completes
// htmx:beforeSwap - Before content is swapped
// htmx:afterSwap - After content is swapped
// htmx:afterSettle - After settling is complete