成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

不使用 Javascript 也可以和瀏覽器進(jìn)行交互?

開發(fā) 后端
Htmx 是一個庫,它允許你直接從 HTML 訪問現(xiàn)代瀏覽器功能,而不是使用Javascript。

Htmx 是一個庫,它允許你直接從 HTML 訪問現(xiàn)代瀏覽器功能,而不是使用 javascript。

圖片

要理解 htmx,首先讓我們看一下 HTML 中的 a 標(biāo)簽:

<a href="/blog">Blog</a>

這個標(biāo)記會告訴瀏覽器:當(dāng)用戶單擊此鏈接時,向 /blog 發(fā)出 HTTP GET 請求并將響應(yīng)內(nèi)容加載到瀏覽器窗口中。

然后我們再看下面的 HTML:

<button hx-post="/clicked"
hx-trigger="click"
hx-target="#parent-div"
hx-swap="outerHTML"
>
Click Me!
</button>

這告訴 htmx:當(dāng)用戶單擊此按鈕時,向  /clicked 發(fā)出 HTTP POST 請求并使用響應(yīng)中的內(nèi)容將元素替換為 id 為 parent-div 的 DOM。

Htmx 將 HTML 的核心思想進(jìn)行了擴(kuò)展,為 HTML 語言提供了更多可能性:

  • 現(xiàn)在任何元素,不僅僅是超鏈接和表單,都可以發(fā)出 HTTP 請求。
  • 現(xiàn)在任何事件,不僅僅是點(diǎn)擊或表單提交,都可以觸發(fā)請求。
  • 現(xiàn)在可以使用任何 HTTP verb,而不僅僅是GET 和POST。
  • 現(xiàn)在任何元素,不僅僅是整個window 對象,都可以成為請求更新的目標(biāo)。

請注意,當(dāng)你使用 htmx 時,在服務(wù)器端你通常會使用 HTML 而非 JSON 進(jìn)行響應(yīng)。這會讓你使用原始 Web 編程模型,使用超文本作為應(yīng)用程序狀態(tài)的引擎,甚至你也不需要真正理解這個概念。

另外如果你愿意,可以在使用 htmx 時使用 data- 前綴:

<a data-hx-post="/click">Click Me!</a>

安裝

Htmx 是一個無依賴、面向瀏覽器的 JavaScript 庫。這意味著使用它就像在文檔頭部添加一個 <script> 標(biāo)記一樣簡單,無需復(fù)雜的構(gòu)建步驟或系統(tǒng)。

通過 CDN

使用 htmx 的最快方法是通過 CDN 加載它。你可以簡單地將其添加到你的 head 標(biāo)簽中即可:

<script src="https://unpkg.com/htmx.org@1.8.0" integrity="sha384-cZuAZ+ZbwkNRnrKi05G/fjBX+azI9DNOkNYysZ0I/X5ZFgsmMiBXgDZof30F5ofc" crossorigin="anonymous"></script>

npm

對于 npm 風(fēng)格的構(gòu)建系統(tǒng),同樣你可以通過 npm 安裝 htmx:

npm install htmx.org

安裝后,你需要使用適當(dāng)?shù)墓ぞ邅硎褂?nbsp;node_modules/htmx.org/dist/htmx.js(或 .min.js),例如你可以將 htmx 與一些擴(kuò)展和特定于項目的代碼捆綁在一起。

如果你使用 webpack 來管理你的 javascript:

  • 通過你最喜歡的包管理器(如 npm 或 yarn)安裝 htmx。
  • 在你的index.js 文件 import htmx。
import 'htmx.org';

如果要使用全局 htmx 變量(推薦),則需要將其注入到 window 作用域中:

  • 創(chuàng)建一個定制的 JS 文件。
  • 在index.js 文件中導(dǎo)入該文件。
import 'path/to/my_custom.js';
  • 然后添加如下所示的代碼:
window.htmx = require('htmx.org');
  • 最后重新打包即可

AJAX

htmx 的核心是一組允許你直接從 HTML 發(fā)出 AJAX 請求的屬性:

  • hx-get:向指定的 URL 發(fā)出 GET 請求。
  • hx-post:向指定的 URL 發(fā)出 POST 請求。
  • hx-put:向指定的 URL 發(fā)出 PUT 請求。
  • hx-patch:向指定的 URL 發(fā)出 PATCH 請求。
  • hx-delete:向指定的 URL 發(fā)出 DELETE 請求。

這些屬性都需要一個 URL 來向其發(fā)出 AJAX 請求,當(dāng)元素被觸發(fā)時,該元素將向給定的 URL 發(fā)出指定類型的請求:

<div hx-put="/messages">
Put To Messages
</div>

這會告訴瀏覽器:當(dāng)用戶點(diǎn)擊此 div 時,向 /messages 發(fā)出 PUT 請求并將響應(yīng)加載到 div。

觸發(fā)請求

默認(rèn)情況下,AJAX 請求由元素的 自然 事件觸發(fā):

  • input?、textarea? 和select? 在change 事件上觸發(fā)。
  • form 在提交事件上觸發(fā)。
  • 其他元素都由click 事件觸發(fā)。

如果你想要不同的行為,可以使用 hx-trigger 屬性來指定哪個事件將觸發(fā)請求。

比如下面的一段代碼表示在鼠標(biāo)進(jìn)入時觸發(fā)到 /mouse_entered 的 POST 請求:

<div hx-post="/mouse_entered" hx-trigger="mouseenter">
[Here Mouse, Mouse!]
</div>

HTMX 還有很多使用的方式,可以前往官方文檔 https://htmx.org/docs/ 了解更多。

示例

下面我們用幾個示例來簡單說明下 htmx 是如何使用的。

點(diǎn)擊加載數(shù)據(jù)

這個例子展示了如何在數(shù)據(jù)表格中實現(xiàn)點(diǎn)擊加載下一頁,關(guān)鍵是最后一行:

<tr id="replaceMe">
<td colspan="3">
<button class='btn' hx-get="/contacts/?page=2"
hx-target="#replaceMe"
hx-swap="outerHTML">
Load More Agents... <img class="htmx-indicator" src="/img/bars.svg">
</button>
</td>
</tr>

該行包含一個按鈕,該按鈕將用下一頁結(jié)果替換整行(其中將包含一個用于加載下一頁結(jié)果的按鈕)。

圖片

當(dāng)點(diǎn)擊 Load More Agents... 按鈕后會加載一頁數(shù)據(jù)附加到表格中去。

延遲加載

這個例子展示了如何在頁面上延遲加載元素。我們從如下所示的初始狀態(tài)開始:

<div hx-get="/graph" hx-trigger="load">
<img alt="Result loading..." class="htmx-indicator" width="150" src="/img/bars.svg"/>
</div>

當(dāng)我們加載圖表時,它會顯示一個進(jìn)度指示器,然后通過 CSS 過渡加載圖表并逐漸淡入視圖:

.htmx-settling img {
opacity: 0;
}
img {
transition: opacity 300ms ease-in;
}

該示例的效果就是先顯示一個加載的指示器,然后加載一張圖片出來,就是通常的延遲加載的效果。

圖片圖片

Git 倉庫:https://github.com/bigskysoftware/htmx。

責(zé)任編輯:姜華 來源: Github愛好者
相關(guān)推薦

2017-01-05 09:07:25

JavaScript瀏覽器驅(qū)動

2022-08-02 13:32:24

Linux瀏覽器代碼

2016-10-09 08:38:01

JavaScript瀏覽器事件

2020-08-13 12:02:44

JavaScript瀏覽器選項卡

2012-09-18 09:20:21

2012-04-11 13:46:33

ibmdw

2010-09-15 09:12:03

JavaScript瀏覽器兼容

2010-05-10 13:54:00

2012-09-03 15:27:43

搜狗瀏覽器

2016-02-02 10:03:15

chromeMaterial De

2020-03-12 11:29:51

JavaScript瀏覽器語言

2012-03-20 11:31:58

移動瀏覽器

2012-03-19 17:25:22

2012-03-20 11:41:18

海豚瀏覽器

2010-08-10 09:40:23

Flex與瀏覽器交互

2010-07-22 09:26:29

2012-03-20 11:07:08

2009-03-04 11:16:03

RABSoft瀏覽器控制電腦

2012-12-07 13:37:26

Facebook Firefox

2020-12-17 11:08:20

Safari手機(jī)瀏覽器蘋果
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: www.夜夜骑| 天天综合网永久 | 精品一区二区三区免费视频 | 国产丝袜av | 综合精品| 亚洲一区二区三区四区五区中文 | 免费在线观看av网站 | 亚洲成人精品一区 | 一级黄片一级毛片 | 岛国av在线免费观看 | 精品欧美一区二区三区免费观看 | 香蕉婷婷| 亚洲第一天堂无码专区 | 成人免费影院 | 国产欧美日韩一区二区三区 | 久久久青草婷婷精品综合日韩 | 国产精品视频一二三区 | 国产成人精品在线播放 | 国产剧情一区二区三区 | 日本在线综合 | 免费九九视频 | av免费网站在线观看 | 国产一区二区三区 | 九九在线精品视频 | 久久综合爱 | 亚洲免费人成在线视频观看 | 久久精品中文字幕 | 欧美日韩成人在线 | 精久久 | a视频在线观看 | 国产精品一区二区在线 | 怡红院怡春院一级毛片 | 日韩av在线免费 | 在线成人| 日韩精品在线视频免费观看 | 狠狠操av| 日韩成人精品一区二区三区 | 亚洲成人观看 | 免费国产一区 | 亚洲一区 | 777zyz色资源站在线观看 |