適合初學(xué)者的綜合 htmx 備忘清單
htmx 是 intercooler.js 的繼承者
<script
src="https://unpkg.com/htmx.org@1.8.4"
>
</script>
<!-- 有一個按鈕POST,通過AJAX點擊 -->
<button
hx-post="/clicked"
hx-swap="outerHTML"
>
點擊我
</button>
hx-post 和 hx-swap 屬性告訴 htmx:
當(dāng)用戶單擊此按鈕時,向
/clicked發(fā)出AJAX請求,并用響應(yīng)替換整個按鈕
$ npm install htmx.org
安裝 htmx 將導(dǎo)入添加到您的 index.js
import 'htmx.org';
有一個按鈕,可以從 /contacts/1/edit 獲取聯(lián)系人的編輯 UI
<div hx-target="this" hx-swap="outerHTML">
<div><label>名字</label>: Joe</div>
<div><label>姓</label>: Blow</div>
<div><label>郵箱</label>: joe@blow.com</div>
<button hx-get="/contact/1/edit" class="btn btn-primary">
點擊編輯
</button>
</div>
這將返回一個可用于編輯聯(lián)系人的表單
<form hx-put="/contact/1" hx-target="this" hx-swap="outerHTML">
<div>
<label>名字</label>
<input type="text" name="firstName" value="Joe">
</div>
<div class="form-group">
<label>姓</label>
<input type="text" name="lastName" value="Blow">
</div>
<div class="form-group">
<label>郵箱</label>
<input type="email" name="email" value="joe@blow.com">
</div>
<button class="btn">提交</button>
<button class="btn" hx-get="/contact/1">取消</button>
</form>
表單按照通常的 REST-ful 模式將 PUT 發(fā)回 /contacts/1
<table class="table delete-row-example">
<thead>
<tr>
<th>Name</th> <th>Email</th> <th>Status</th> <th></th>
</tr>
</thead>
<tbody hx-confirm="Are you sure?" hx-target="closest tr" hx-swap="outerHTML swap:1s">
...
</tbody>
</table>
表體有一個 hx-confirm 屬性來確認(rèn)刪除動作。 它還將所有按鈕的目標(biāo)設(shè)置為最近的 tr,即最近的表格行(hx-target 繼承自 DOM 中的父級)hx-swap 中的交換規(guī)范表示將整個目標(biāo)換出并收到響應(yīng)后等待 1 秒。最后一點是為了讓我們可以使用以下 CSS:
tr.htmx-swapping td {
opacity: 0;
transition: opacity 1s ease-out;
}
在交換/刪除之前淡出該行。每行都有一個帶有 hx-delete 屬性的按鈕,該屬性包含發(fā)出 DELETE 請求以從服務(wù)器中刪除該行的 url。此請求以空內(nèi)容響應(yīng),表明該行應(yīng)替換為空內(nèi)容
<tr>
<td>Angie MacDowell</td>
<td>angie@macdowell.org</td>
<td>Active</td>
<td>
<button class="btn btn-danger" hx-delete="/contact/1">
Delete
</button>
</td>
</tr>
<div hx-get="/graph" hx-trigger="load">
<img
alt="正在加載中..."
class="htmx-indicator"
width="150"
src="/img/bars.svg"/>
</div>
當(dāng)我們加載圖表時顯示進(jìn)度指示器。 然后通過穩(wěn)定的 CSS(htmx-settling) 過渡加載圖形并逐漸淡入視圖
.htmx-settling img {
opacity: 0;
}
img {
transition: opacity 300ms ease-in;
}
| :-- | -- |
|---|---|
innerHTML | 默認(rèn),替換目標(biāo)元素的內(nèi)部 html |
outerHTML | 用響應(yīng)替換整個目標(biāo)元素 |
beforebegin | 在目標(biāo)元素之前插入響應(yīng) |
afterbegin | 目標(biāo)元素的第一個子元素之前插入響應(yīng) |
beforeend | 目標(biāo)元素的最后一個子元素之后插入響應(yīng) |
afterend | 在目標(biāo)元素之后插入響應(yīng) |
delete | 無論響應(yīng)如何,都刪除目標(biāo)元素 |
none | 不附加來自響應(yīng)的內(nèi)容 (帶外項目仍將被處理) |
| 屬性 | 說明 |
|---|---|
hx-boost | 添加或刪除鏈接和表單的漸進(jìn)增強(qiáng) |
hx-get | 向指定的 URL 發(fā)出 GET |
hx-post | 向指定的 URL 發(fā)出 POST |
hx-push-url | 將 URL 推入瀏覽器地址欄,創(chuàng)建一個新的歷史條目 |
hx-select | 從響應(yīng)中選擇要換入的內(nèi)容 |
hx-select-oob | 從帶外(目標(biāo)以外的某個地方)的響應(yīng)中選擇要換入的內(nèi)容 |
hx-swap | 控制內(nèi)容的交換方式(outerHTML、beforeEnd、afterend,...) |
hx-swap-oob | 將響應(yīng)中的內(nèi)容標(biāo)記為帶外(應(yīng)該在目標(biāo)以外的地方交換) |
hx-target | 指定要交換的目標(biāo)元素 |
hx-trigger | 指定觸發(fā)請求的事件 |
hx-vals | 向參數(shù)添加值以隨請求一起提交(JSON 格式) |
使用 htmx 時最常用的屬性
| 屬性 | 說明 |
|---|---|
hx-confirm | 在發(fā)出請求之前顯示一個 confim() 對話框 |
hx-delete | 向指定的 URL 發(fā)出 DELETE |
hx-disable | 禁用給定節(jié)點和任何子節(jié)點的 htmx 處理 |
hx-disinherit | 控制和禁用子節(jié)點的自動屬性繼承 |
hx-encoding | 更改請求編碼類型 |
hx-ext | 用于此元素的擴(kuò)展 |
hx-headers | 添加到將與請求一起提交的標(biāo)頭 |
hx-history-elt | 在歷史導(dǎo)航期間要快照和恢復(fù)的元素 |
hx-include | 在請求中包含額外數(shù)據(jù) |
hx-indicator | 在請求期間放置 htmx-request 類的元素 |
hx-params | 過濾將與請求一起提交的參數(shù) |
hx-patch | 向指定的 URL 發(fā)出 PATCH |
hx-preserve | 指定在請求之間保持不變的元素 |
hx-prompt | 在提交請求之前顯示一個 prompt() |
hx-put | 向指定的 URL 發(fā)出 PUT |
hx-replace-url | 替換瀏覽器地址欄中的 URL |
hx-request | 配置請求的各個方面 |
hx-sse | 已移至分機(jī)。 舊版本的文檔 |
hx-sync | 控制不同元素發(fā)出的請求如何同步 |
hx-validate | 強(qiáng)制元素在請求之前驗證自己 |
hx-vars | 將值動態(tài)添加到參數(shù)以隨請求提交(已棄用,請使用 hx-vals) |
hx-ws | 已移至分機(jī)。舊版本的文檔 |
列出了 htmx 中可用的所有其他屬性
| Class | 說明 |
|---|---|
htmx-added | 在交換之前應(yīng)用于新的內(nèi)容,在它被解決之后移除 |
htmx-indicator | 一個動態(tài)生成的類,當(dāng)存在 htmx-request 類時將切換可見(不透明度: 1) |
htmx-request | 在請求進(jìn)行時應(yīng)用于元素或使用 hx-indicator 指定的元素 |
htmx-settling | 內(nèi)容交換后應(yīng)用于目標(biāo),內(nèi)容確定后刪除。 可以通過 hx-swap 修改持續(xù)時間 |
htmx-swapping | 在交換任何內(nèi)容之前應(yīng)用于目標(biāo),在交換之后移除。 可以通過 hx-swap 修改持續(xù)時間 |
| 事件 | 說明 |
|---|---|
htmx:abort | 將此事件發(fā)送到元素以中止請求 |
htmx:afterOnLoad | AJAX 請求完成處理成功響應(yīng)后觸發(fā) |
htmx:afterProcessNode | 在 htmx 初始化節(jié)點后觸發(fā) |
htmx:afterRequest | AJAX 請求完成后觸發(fā) |
htmx:afterSettle | DOM 穩(wěn)定后觸發(fā) |
htmx:afterSwap | 換入新內(nèi)容后觸發(fā) |
htmx:beforeOnLoad | 在任何響應(yīng)處理發(fā)生之前觸發(fā) |
htmx:beforeProcessNode | 在 htmx 初始化節(jié)點之前觸發(fā) |
htmx:beforeRequest | 在發(fā)出 AJAX 請求之前觸發(fā) |
htmx:beforeSwap | 在交換完成之前觸發(fā),允許您配置交換 |
htmx:beforeSend | 在發(fā)送 ajax 請求之前觸發(fā) |
htmx:configRequest | 在請求之前觸發(fā),允許您自定義參數(shù)、標(biāo)頭 |
htmx:confirm | 在元素上發(fā)生觸發(fā)器后觸發(fā) 允許您取消(或延遲)發(fā)出 AJAX 請求 |
htmx:historyCacheError | 在緩存寫入期間因錯誤而觸發(fā) |
htmx:historyCacheMiss | 在歷史子系統(tǒng)中的緩存未命中時觸發(fā) |
htmx:historyCacheMissError | 遠(yuǎn)程檢索不成功時觸發(fā) |
htmx:historyCacheMissLoad | 在成功的遠(yuǎn)程檢索時觸發(fā) |
htmx:historyRestore | 當(dāng) htmx 處理歷史恢復(fù)操作時觸發(fā) |
htmx:beforeHistorySave | 在內(nèi)容保存到歷史緩存之前觸發(fā) |
htmx:load | 當(dāng)新內(nèi)容添加到 DOM 時觸發(fā) |
htmx:noSSESourceError | 當(dāng)元素在其觸發(fā)器中引用 SSE 事件 但未定義父 SSE 源時觸發(fā) |
htmx:onLoadError | htmx中onLoad處理異常時觸發(fā) |
htmx:oobAfterSwap | 在交換了一個帶元素之后觸發(fā) |
htmx:oobBeforeSwap | 在帶外元素交換完成之前觸發(fā),允許您配置交換 |
htmx:oobErrorNoTarget | 當(dāng)帶外元素在當(dāng)前 DOM 中沒有匹配的 ID 時觸發(fā) |
htmx:prompt | 顯示提示后觸發(fā) |
htmx:pushedIntoHistory | 在 url 被推送到歷史記錄后觸發(fā) |
htmx:responseError | 當(dāng)發(fā)生 HTTP 響應(yīng)錯誤 (非 200 或 300 響應(yīng)代碼)時觸發(fā) |
htmx:sendError | 當(dāng)網(wǎng)絡(luò)錯誤阻止 HTTP 請求發(fā)生時觸發(fā) |
htmx:sseError | 當(dāng) SSE 源發(fā)生錯誤時觸發(fā) |
htmx:swapError | 在交換階段發(fā)生錯誤時觸發(fā) |
htmx:targetError | 指定無效目標(biāo)時觸發(fā) |
htmx:timeout | 發(fā)生請求超時時觸發(fā) |
htmx:validation:validate | 在驗證元素之前觸發(fā) |
htmx:validation:failed | 當(dāng)元素驗證失敗時觸發(fā) |
htmx:validation:halted | 當(dāng)請求由于驗證錯誤而停止時觸發(fā) |
htmx:xhr:abort | 當(dāng) ajax 請求中止時觸發(fā) |
htmx:xhr:loadend | ajax 請求結(jié)束時觸發(fā) |
htmx:xhr:loadstart | ajax 請求開始時觸發(fā) |
htmx:xhr:progress | 在支持進(jìn)度事件的 ajax 請求期間定期觸發(fā) |
| 方法 | 說明 |
|---|---|
htmx.addClass() | 向給定元素添加一個類 |
htmx.ajax() | 發(fā)出一個 htmx 風(fēng)格的 ajax 請求 |
htmx.closest() | 找到與選擇器匹配的給定元素的最近父級 |
htmx.config | 保存當(dāng)前 htmx 配置對象的屬性 |
htmx.createEventSource | 包含為 htmx 創(chuàng)建 SSE EventSource 對象的函數(shù)的屬性 |
htmx.createWebSocket | 包含為 htmx 創(chuàng)建 WebSocket 對象的函數(shù)的屬性 |
htmx.defineExtension() | 定義一個 htmx 擴(kuò)展 |
htmx.find() | 查找與選擇器匹配的單個元素 |
htmx.findAll() | htmx.findAll(elt, selector) | 查找與給定選擇器匹配的所有元素 |
htmx.logAll() | 安裝將記錄所有 htmx 事件的記錄器 |
htmx.logger | 設(shè)置為當(dāng)前記錄器的屬性(默認(rèn)為空) |
htmx.off() | 從給定元素中刪除事件偵聽器 |
htmx.on() | 在給定元素上創(chuàng)建事件偵聽器,并返回它 |
htmx.onLoad() | 為 htmx:load 事件添加回調(diào)處理程序 |
htmx.parseInterval() | 將間隔聲明解析為毫秒值 |
htmx.process() | 處理給定元素及其子元素,連接任何 htmx 行為 |
htmx.remove() | 刪除給定的元素 |
htmx.removeClass() | 從給定元素中刪除一個類 |
htmx.removeExtension() | 刪除一個 htmx 擴(kuò)展 |
htmx.takeClass() | 從給定元素的其他元素中獲取一個類 |
htmx.toggleClass() | 從給定元素切換一個類 |
htmx.trigger() | 在元素上觸發(fā)事件 |
htmx.values() | 返回與給定元素關(guān)聯(lián)的輸入值 |
| 標(biāo)頭 | 說明 |
|---|---|
HX-Boosted | 表示請求是通過使用 hx-boost 的元素發(fā)出的 |
HX-Current-URL | 瀏覽器的當(dāng)前 URL |
HX-History-Restore-Request | 如果請求是在本地歷史緩存未命中后進(jìn)行歷史恢復(fù),則為 true |
HX-Prompt | 用戶對 hx 提示的響應(yīng) |
HX-Request | 總是 true |
HX-Target | 目標(biāo)元素的 id(如果存在) |
HX-Trigger-Name | 觸發(fā)元素的名稱(如果存在) |
HX-Trigger | 觸發(fā)元素的 id(如果存在) |
| 標(biāo)頭 | 說明 |
|---|---|
HX-Location | 允許您執(zhí)行不執(zhí)行整頁重新加載的客戶端重定向 |
HX-Push-Url | 將一個新的 url 推入歷史堆棧 |
HX-Redirect | 可用于將客戶端重定向到新位置 |
HX-Refresh | 如果設(shè)置為 true,客戶端將完全刷新頁面 |
HX-Replace-Url | 替換地址欄中的當(dāng)前 URL |
HX-Reswap | 允許您指定如何交換響應(yīng) 有關(guān)可能的值,請參閱 hx-swap |
HX-Retarget | 將內(nèi)容更新的目標(biāo)更新為頁面上不同元素的 CSS 選擇器 |
HX-Trigger | 允許您觸發(fā)客戶端事件 請參閱文檔以獲取更多信息 |
HX-Trigger-After-Settle | 允許您觸發(fā)客戶端事件 請參閱文檔以獲取更多信息 |
HX-Trigger-After-Swap | 允許您觸發(fā)客戶端事件 請參閱文檔以獲取更多信息 |
感谢您访问我们的网站,您可能还对以下资源感兴趣:
国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片