精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何結合使用HTML與Htmx并減少JavaScript代碼量

譯文
開發 前端
本文將介紹Htmx以及它如何幫助用戶在服務器上重用元素、減少JavaScript代碼量,并避免構建。

譯者 | 李睿

審校 | 孫淑娟

HTML作為宇宙的中心  

眾所周知,全球互聯網得以蓬勃發展在很大程度上歸功于HTML和CSS。Javascript(JS)可以充當HTML和CSS之間的粘合劑,使頁面更具動態性和交互性,但Web編程的歷史發展不同。在客戶端渲染和其他類似技術出現之后,使用JS創建Web應用程序變得更加困難。  

什么是Htmx?  

Htmx是一個庫,允許用戶使用簡單的標記創建現代且強大的用戶界面。多虧有了它,可以直接從HTML元素執行AJAX請求、觸發CSS轉換、調用WebSocket和服務器發送的事件。  

SSR應用  

Htmx的使用促使人們逐漸放棄客戶端渲染(CSR),轉而支持服務器端渲染(SSR)。服務端渲染(SSR)被認為是最后的手段,只有在需要快速提高性能時才使用。但是,服務端渲染(SSR)可以構建應用程序的整個用戶界面。  

Htmx不需要任何其他JS包即可運行,并且與框架和語言無關。因此,它可以與任何服務器平臺一起使用,例如NodeExpress、RAILS、Django、Phoenix、Laravel等。  

重用服務器上的組件  

Htmx允許用戶使用更熟悉的庫重用服務器端用戶界面(UI)元素;例如,用于Node的Pug或用于RAILS和Django的模板庫。它有助于使HTML變得復雜和動態。  

這里是RentalsListing,一個使用Express.js和HTML構建的演示應用程序。它對統計和動態場景使用相同的部分:

HTML 
ul.results
each rental in rentals
li
article.rental
button.image(type="button", _="on click toggle .large then if #view-caption.textContent === 'View Larger' then set #view-caption.textContent to 'View Smaller' else set #view-caption.textContent to 'View Larger'")
img(src=rental.attributes.image, alt='An image of ' + rental.attributes.title)
small#view-caption View Larger
.details
h3
a(href='/rentals/' + rental.id) #{rental.attributes.title}
.detail.owner
span Owner:
| #{rental.attributes.owner}
.detail.type
span Type:
| #{rental.attributes.category}
.detail.location
span Location:
| #{rental.attributes.city}
.detail.bedrooms
span Bedrooms:
| #{rental.attributes.bedrooms}
.map
img(alt='A map of ' + rental.attributes.title, src=rental.mapbox, width="150",height="150")

在主頁的列表中,使用了Pug庫中的include來顯示部分內容:

HTML 
extends layout
block content
.jumbo
.right
h2 Welcome to Super Rentals!
p We hope you find exactly what you're looking for in a place to stay.
a.button(href="/about") About Us
.rentals
label
span Where would you like to stay?
input.light(type="text", name="search",
hx-post="/search" ,
hx-trigger="keyup changed delay:500ms" ,
hx-target=".results" ,
hx-indicator=".htmx-indicator")

include includes/rental-list.pug

每次用戶在網站上搜索租賃房產時,都可以使用相同的部分填充搜索結果。結果如下所示:

JavaScript 
app.post('/search', (req, res) => {
const { search } = req.body;

const results = _rentals.data.filter(r => {
const _search = search.toLowerCase();
const _title = r.attributes.title.toLowerCase();
return _title.includes(_search);
});
const template = pug.compileFile('views/includes/rental-list.pug');
const markup = template({ rentals: results });
res.send(markup);
});

服務器端路由  

客戶端路由帶來了一系列問題。例如,在基于散列的路由和基于URL的路由之間總是存在一個兩難選擇。由于舊版瀏覽器(如Internet Explorer 11)不支持歷史API,因此在URL中使用片段ID的基于哈希的路由幾乎總是首選。  

大多數JS框架都實現了自己的客戶端路由邏輯。同時,所有框架都使用自己的瀏覽器API,例如window.history。這導致應用程序中出現大量樣板代碼。  

更少的JS代碼  

Htmx的主要優勢在于編寫并發送到瀏覽器的JS代碼量。與hyperscript一起,該庫允許用戶創建豐富的交互式應用程序,而無需使用JS中的客戶端代碼:

HTML 
<!-- have a button POST a click via AJAX -->
<button hx-post="/clicked" hx-swap="outerHTML">
Click Me
</button>

當單頁應用剛開始流行時,社區采用JSON作為數據交換的標準。現在,為了從JSON數據中對HTML進行逆向工程,用戶通常需要處理通過API來自服務器的大量客戶端數據。API響應通常包含不完整或冗余的數據。  

為了解決這個問題,已經開發了像GraphQL這樣的復雜替代方案,因此用戶只能從服務器獲取所需的數據。Htmx提供了更好的解決方案:只需將HTML替換為從服務器接收到的HTML響應,而不再需要客戶端數據。  

不再構建/編譯  

Htmx的另一個優點是不再采用Web應用程序構建工具。可以改用CDN工具:

HTML 
<!-- Load from unpkg -->
<script src="<https://unpkg.com/htmx.org@1.3.3>"></script>

不再構建是Web應用程序開發的全球趨勢。一方面,ES模塊規范已經被所有瀏覽器開發者所接受。另一方面,現在有了Skypack、Snowpack和Vite工具,可以與CDN和ESM方法結合使用。所有這些最終將導致客戶端JavaScript的構建減少。此外,無需安裝數千個npm包并維護復雜的構建配置。  

統一代碼庫  

一個應用程序的兩個代碼庫意味著額外的開發挑戰。特別是,需要同步更新部署、兩次配置構建管道、更新兩個庫中的框架、維護代碼,并從兩個源運行測試包。  

Htmx允許用戶將所有代碼組合在一個地方:由于渲染在服務器端進行,因此不需要單獨的接口基礎。從長遠來看,這可以為用戶節省大量時間和費用。此外,開發人員可以更加一致地采取行動,他們不必檢查兩個或更多存儲庫。  

行為原則的局部性(LoB)

LoB原理是由編程理論家Richard Gabriel提出的。他指出,所有開發人員都應該努力確保每段代碼的行為在驗證時是顯而易見的。  

Gabriel認為,局部性對于保持代碼易于維護至關重要。局部性是一種特性,它允許程序員在看到代碼的一小部分后就可以了解代碼屬于架構的哪一部分。  

它看起來像這樣:  

HTML 
The behaviour of a code unit should be as obvious as possible by looking only at that unit of code
<div hx-get="/clicked">Click Me</div>

缺乏狀態同步的問題  

客戶端狀態管理產生的問題比解決的問題多。這一原則的實現導致客戶端和服務器端都需要狀態管理。另一種解決方案是將狀態存儲在服務器上。在這種情況下,客戶端充當虛擬執行器,用于呈現狀態更改。

這與瘦客戶機模式類似,瘦客戶機模式是一種帶有連接到終端服務器的輕量級操作系統。這些設備被用來創建第一個用于節省資源的Web應用程序。  

Htmx將幫助用戶避免混淆狀態管理網絡中的用戶界面(UI)代碼;例如,雙向數據綁定、單向數據流和反應式數據。

原文標題:??Removing JavaScript: How To Use HTML With Htmx and Reduce the Amount of Code??,作者:Alexey Shepelev

責任編輯:華軒 來源: 51CTO
相關推薦

2021-11-22 11:30:37

JavaScript代碼瀏覽器

2023-10-07 08:00:00

JavaScriptHTMX

2025-06-10 08:05:00

JavaScript代碼編程語言

2023-09-03 19:43:46

htmxJavaScript網絡

2023-10-19 08:38:18

2025-03-18 07:20:00

JavaScript開發字符串

2025-06-27 08:34:19

2023-04-17 07:49:34

2021-09-03 08:21:20

前端代碼模塊

2024-01-15 00:35:23

JavaScript框架HTML

2022-07-18 08:48:06

HtmxHTML

2023-10-26 08:00:00

HyperscripJavaScript前端

2024-03-22 11:40:40

Node.jsNodeCRUD

2021-04-21 08:00:00

Web工具漏洞

2023-07-18 18:44:35

光纖網絡綜合布線

2024-01-16 09:39:13

Docker系統

2013-08-26 17:41:43

JavaScriptWindows 8.1

2021-06-22 10:16:39

Java工具庫代碼

2021-11-02 09:54:51

Java開發工具

2025-05-20 08:25:00

解構賦值代碼
點贊
收藏

51CTO技術棧公眾號

亚欧美无遮挡hd高清在线视频| 色网站在线看| 三级影片在线观看欧美日韩一区二区| 国产一区二区三区在线| 免费看污黄网站| 黄色片网站在线观看| 国产风韵犹存在线视精品| 97精品视频在线| www.xx日本| 欧美顶级毛片在线播放| 欧美欧美午夜aⅴ在线观看| avove在线观看| 欧美人体大胆444www| 久久99精品视频| 57pao成人国产永久免费| 2014亚洲天堂| 亚洲人成亚洲精品| 日韩三级视频在线观看| 红桃av在线播放| 性xxxfreexxxx性欧美| 26uuuu精品一区二区| 国产一区二区在线播放| 精品一级少妇久久久久久久| 欧美特黄一级大片| 日韩www在线| 一卡二卡三卡四卡五卡| 91九色综合| 黑人欧美xxxx| 成人精品视频在线播放| 麻豆网站在线| 中文在线免费一区三区高中清不卡| 懂色中文一区二区三区在线视频| 中文字幕 亚洲视频| 亚洲激情偷拍| 欧美成人亚洲成人| 国产一区二区三区视频播放| 九九热爱视频精品视频| 亚洲大尺度美女在线| 超碰91在线播放| 久久人体av| 欧洲国内综合视频| 国产精品-区区久久久狼 | 中文字幕国内精品| 泷泽萝拉在线播放| 欧美重口另类| 亚洲国产精品久久久久秋霞不卡| 中文字幕一二三区| 国产精品**亚洲精品| 91.com在线观看| 亚洲免费av一区| 啪啪av大全导航福利综合导航| 欧美午夜精品一区二区蜜桃| 可以免费在线看黄的网站| 自拍网站在线观看| 色哟哟在线观看一区二区三区| 国产乱子伦农村叉叉叉| 女人让男人操自己视频在线观看| 午夜欧美大尺度福利影院在线看| 男女日批视频在线观看| 僵尸再翻生在线观看| 懂色av中文一区二区三区天美| a级黄色一级片| 在线观看爽视频| 色综合久久天天| 成年人小视频网站| 国产综合av| 欧美日韩免费不卡视频一区二区三区 | av成人午夜| 亚洲欧美黄色片| a亚洲天堂av| 日本一区视频在线| 欧洲日本在线| 亚洲在线视频网站| 18禁网站免费无遮挡无码中文| 老司机深夜福利在线观看| 狠狠久久亚洲欧美专区| 一区二区三区国产免费| 91精品亚洲一区在线观看| 日韩欧美一卡二卡| av黄色一级片| 欧美色图国产精品| 久久综合色88| 成人免费区一区二区三区| 久久婷婷久久| 亚洲在线视频观看| 神马一区二区三区| 欧美国产欧美亚州国产日韩mv天天看完整 | 女人av一区| 日韩一中文字幕| 黄色小视频在线免费看| 三级在线观看一区二区 | 国产夫妻在线观看| 26uuu亚洲综合色| 在线精品日韩| 超碰在线公开| 在线播放日韩导航| 少妇一级淫片免费放播放| 精品一区二区三区在线| 欧美乱妇40p| 国产无遮挡呻吟娇喘视频| 老司机精品视频一区二区三区| 丁香五月网久久综合| 国内在线免费高清视频| 一片黄亚洲嫩模| 看欧美ab黄色大片视频免费| 一区二区网站| 中文字幕视频一区二区在线有码 | 亚洲自拍偷拍在线| 暖暖视频在线免费观看| 一区二区三区精品视频在线| 杨幂毛片午夜性生毛片| 精品综合久久88少妇激情| xxx欧美精品| 黄瓜视频在线免费观看| 国产馆精品极品| 相泽南亚洲一区二区在线播放| 成人影音在线| 欧美日韩国产综合视频在线观看| 国产极品一区二区| 国产精品久久| 国产在线不卡精品| 韩国中文免费在线视频| 婷婷久久综合九色综合伊人色| 手机在线免费毛片| 久久在线免费| 国产成人午夜视频网址| 五月婷婷综合久久| 一区二区激情小说| 午夜国产福利在线观看| 国产一区日韩| 欧洲成人性视频| 手机看片福利在线| 亚洲亚洲精品在线观看| 亚洲综合在线一区二区| 成人羞羞动漫| 国产精品国产福利国产秒拍| 欧美一区二区视频| 偷拍日韩校园综合在线| 五月天丁香社区| 欧美黄色一级视频| 91最新在线免费观看| 日本在线观看| 欧美日本一区二区在线观看| 长河落日免费高清观看| 日韩电影免费在线| 丝袜美腿玉足3d专区一区| 草草在线观看| 精品在线小视频| 丁香六月婷婷综合| 久久综合九色综合久久久精品综合 | 日本高清中文字幕在线| 欧美日韩成人在线| 91n在线视频| 国产一区二区伦理片| 自拍偷拍99| 日本免费精品| 久久久久久久久91| 人妻va精品va欧美va| 午夜精品久久久久久久久久| 国产美女视频免费观看下载软件| 99国产精品| 蜜桃传媒视频第一区入口在线看| 91久久国产综合久久91猫猫| 一区二区在线视频播放| 一级片aaaa| 一区二区三区四区在线播放| 在线xxxxx| 亚洲综合不卡| 五月天久久狠狠| 国产精品视频首页| 欧美精品久久久久久久| 免费一级在线观看播放网址| 欧美午夜精品一区二区蜜桃| avove在线播放| av电影一区二区| 麻豆传传媒久久久爱| 久久中文字幕av| 9a蜜桃久久久久久免费| 中文字幕在线免费观看视频| 中文字幕不卡在线视频极品| av网站在线观看免费| 午夜精品一区在线观看| 久久久久久久久久久久久久久| 久久99在线观看| 成人精品视频在线播放| 精品免费一区二区| 91色p视频在线| 欧美大胆a人体大胆做受| 亚洲色在线视频| 国产欧美日韩成人| 精品美女国产在线| 成年人视频软件| 成人免费看的视频| 天天干在线影院| 亚洲香蕉网站| 亚洲一区二区不卡视频| 成人直播在线观看| 国产精品免费看久久久香蕉| 精灵使的剑舞无删减版在线观看| 亚洲男人av电影| 国产成人麻豆精品午夜在线| 91黄色小视频| 国产亚洲欧美精品久久久www| 国产午夜精品久久久久久久| 亚洲妇女无套内射精| 日韩av一区二区三区| 免费拍拍拍网站| 99精品视频在线| 欧美日韩一区二| 成人午夜大片| 91久久精品视频| 超薄肉色丝袜脚交一区二区| 久久久久久久久久久国产| 1pondo在线播放免费| 日韩av影院在线观看| 99久久久国产精品无码网爆 | 国产理论片在线观看| 色综合天天综合网国产成人综合天 | 亚洲最新视频在线观看| 女人十八毛片嫩草av| 99久久伊人久久99| 少妇极品熟妇人妻无码| 麻豆精品视频在线| 久久久久狠狠高潮亚洲精品| 亚洲国产一区二区精品专区| 91xxx视频| 水蜜桃精品av一区二区| 欧美在线一区二区三区四区| 欧美亚洲大陆| 国产精品日韩欧美一区二区三区| 超碰国产精品一区二页| 国产精品色悠悠| 神马电影网我不卡| 国产91精品久久久久| bl视频在线免费观看| 欧美精品在线免费观看| 国产激情视频在线| 久久久精品久久久久| 在线看黄色av| 日韩中文在线视频| 91caoporm在线视频| 一区二区三区 在线观看视| 青青草在线免费视频| 亚洲精品视频在线观看视频| 香蕉av在线播放| 亚洲精品美女网站| 日本一区高清| 亚洲欧美精品suv| 男人av在线| 亚洲人成电影网站色| 日韩精品视频在线观看一区二区三区| 亚洲精品国产精品乱码不99按摩| 好男人在线视频www| 337p日本欧洲亚洲大胆精品| 男人天堂网在线视频| 亚洲国产精品电影| 欧美新色视频| 国产一区二区三区在线视频| 在线观看完整版免费| xxxx欧美18另类的高清| 中文字幕有码在线观看| 久久久久久午夜| 三级中文字幕在线观看| 日本精品视频在线播放| 澳门av一区二区三区| 91精品久久久久久久久久入口 | 免费一二一二在线视频| 欧美最猛性xxxxx免费| 国产精品无码久久久久| 91九色国产社区在线观看| 综合激情五月婷婷| 久久99久久99精品蜜柚传媒| 教室别恋欧美无删减版| 宅男噜噜99国产精品观看免费| 一区二区国产在线| 久久精品国产sm调教网站演员| 久久高清一区| 欧美一级xxxx| 成人免费视频国产在线观看| 蜜桃传媒一区二区亚洲| 亚洲女同一区二区| av在线观看地址| 午夜宅男久久久| jizz大全欧美jizzcom| 国产精品羞羞答答xxdd| 搡老熟女老女人一区二区| 国产精品少妇自拍| 欧美日韩国产精品一区二区三区| 欧美日韩精品中文字幕| 中文字幕乱码视频| 精品日韩欧美在线| 成人亚洲性情网站www在线观看| 久久午夜a级毛片| 中文字幕在线视频网站| 91日本在线观看| 免费欧美视频| 国产尤物av一区二区三区| 日韩 欧美一区二区三区| 天天躁日日躁狠狠躁av| 中文字幕精品综合| 日本五十路女优| 欧美日韩激情一区二区三区| 色wwwwww| 久久精品最新地址| 日本成人三级电影| 国产精品传媒毛片三区| 日韩大片在线观看| 5月婷婷6月丁香| 国产乱人伦偷精品视频免下载| 欧美激情aaa| 午夜精品国产更新| 国产视频在线一区| 在线中文字幕日韩| 中文字幕成在线观看| 成人午夜电影免费在线观看| 日韩精品免费一区二区三区| 日韩少妇内射免费播放18禁裸乳| 国产激情一区二区三区桃花岛亚洲| 亚洲精品一区二区三区影院忠贞| 精品动漫一区二区| www.久久色| 另类天堂视频在线观看| 亚洲精品555| 欧美激情论坛| 国产欧美不卡| 中国免费黄色片| 一二三四区精品视频| 97超碰国产在线| 中文字幕亚洲一区二区三区五十路| 中文字幕影音在线| 久久精品综合一区| 亚洲激情偷拍| 久久久久9999| 五月婷婷综合激情| 欧美亚洲精品在线观看| 欧美福利视频在线| 日韩一区二区三区在线看| 久久av秘一区二区三区| 久久精品99国产精品| 天堂网av2018| 欧美日韩精品二区第二页| 9i精品一二三区| 国产精品入口免费视频一| 欧美综合另类| 不卡的av中文字幕| 国产精品三级视频| 亚洲一区二区色| 久久精品久久久久久国产 免费| 日韩毛片免费看| 中文字幕一区综合| 国精品**一区二区三区在线蜜桃| 天天色影综合网| 欧美一级在线免费| 午夜dj在线观看高清视频完整版| av在线不卡一区| 亚洲福利精品| 国产色视频一区二区三区qq号| 欧美体内谢she精2性欧美| 精品久久av| 国产欧洲精品视频| 91精品国产91久久久久久密臀| 国产一级免费大片| 亚洲综合色成人| 完全免费av在线播放| 外国成人免费视频| 日韩不卡的av| 精品国产乱码久久久久久虫虫漫画| 色av男人的天堂免费在线| 国产精品av免费在线观看| 99久久激情| 91超薄肉色丝袜交足高跟凉鞋| 精品久久久久久久大神国产| 番号集在线观看| 92看片淫黄大片欧美看国产片| 亚洲视频综合| 熟女少妇内射日韩亚洲| 欧美日本视频在线| 成人影音在线| 日韩亚洲一区在线播放| 国产尤物一区二区| 午夜影院在线看| 色七七影院综合| 久久男人av| 超碰在线播放91| 亚洲一本大道在线| 成人免费在线观看| 99国精产品一二二线| 久久国产精品久久w女人spa| 国产在线免费看| 亚洲黄页网在线观看| 日本欧美在线| 精品久久久久久久久久中文字幕| 欧美国产精品中文字幕| 熟妇人妻一区二区三区四区 | 美女视频亚洲色图| 亚洲欧洲日本精品| 亚洲成人av一区| 免费在线观看黄色| 久久综合九色综合久99| 国产在线不卡视频|