精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

秋霞一区二区| yw193.com尤物在线| 精品91视频| 亚洲欧美国产另类| 中文字幕66页| caoporn视频在线| 日本一区二区三区在线观看| 国产在线a不卡| 国产一级视频在线观看| 精品久久视频| 亚洲国产精彩中文乱码av| 美女黄色片视频| 日韩另类在线| 国产精品午夜电影| 国产精品自拍首页| 中文字幕在线观看精品| 日韩视频二区| www.色综合| 精品无码人妻一区| 国产精品久久久久久久久久久久久久久 | 亚洲av成人无码网天堂| 麻豆精品在线观看| 91sa在线看| www.99re7| 欧美精品色图| 日韩国产在线看| 久草福利在线观看| 99蜜月精品久久91| 欧美日韩亚洲精品一区二区三区| 综合网五月天| 超碰97在线免费观看| 91色在线porny| 高清视频在线观看一区| 欧美brazzers| 欧美日韩免费观看一区=区三区| 在线视频日本亚洲性| 中文文字幕文字幕高清| 成人直播在线观看| 日韩欧美国产综合| 久久精品视频91| 综合日韩av| 精品人伦一区二区三区蜜桃网站| 日本不卡高清| 欧美在线观看一区| 日韩有码免费视频| 在线中文字幕视频观看| 亚洲欧洲精品一区二区精品久久久| 欧美一区二区三区精美影视| 亚洲人视频在线观看| 成人毛片老司机大片| 99久久无色码| 成人小说亚洲一区二区三区| 国产传媒久久文化传媒| 亚洲aa中文字幕| 国产又粗又猛又爽| 韩国av一区二区三区在线观看| 国产日韩欧美在线| 国产尤物在线观看| 国内久久婷婷综合| 91嫩草在线视频| 精品人妻一区二区三区含羞草 | 亚洲a级在线播放观看| 亚洲视频一区在线播放| 韩国一区二区在线观看| 91人人爽人人爽人人精88v| 国产农村妇女毛片精品久久| 国产精品资源在线看| 99在线免费观看视频| 丰满人妻妇伦又伦精品国产| 成人a免费在线看| 久久久精品有限公司| 国产视频网址在线| 国产精品久久久久久久久晋中 | 国产精品久久久久久福利| 亚洲欧洲在线观看av| 草草草视频在线观看| 超碰在线cao| 色8久久人人97超碰香蕉987| 天堂网在线免费观看| 欧美午夜网站| 精品在线小视频| 男女男精品视频网站| 午夜国产精品视频| 2021国产精品视频| 亚洲天堂avav| 99热精品国产| 一区二区成人国产精品| 欧美女同一区| 在线视频亚洲一区| 中文字幕乱码在线人视频| 欧洲精品一区| 久久久999精品| 可以免费看的av毛片| 免费观看成人av| 成人av免费电影| 国产大片在线免费观看| 一区二区成人在线视频| 国产综合免费视频| 日日夜夜精品| 精品亚洲一区二区三区四区五区| 亚洲最大成人综合网| 欧美特黄一级| 国产精品久久久久久久久久| 成人无码一区二区三区| 日本一区二区三区四区在线视频| a级网站在线观看| 高清不卡亚洲| 欧美mv和日韩mv的网站| 成人一级片免费看| 校园激情久久| 成人自拍视频网站| 免费超碰在线| 在线日韩国产精品| 中文字幕a在线观看| 99精品视频在线| 国产福利视频一区二区| 好吊色一区二区| 亚洲欧美中日韩| 欧美精品第三页| 久9re热视频这里只有精品| 久久精品久久久久| 国产精品51麻豆cm传媒| 91一区在线观看| 久久亚洲国产成人精品无码区 | 国产精品乱子乱xxxx| 日本高清视频在线播放| 色综合久久久久综合体桃花网| 任你躁av一区二区三区| 久久在线视频免费观看| 欧美激情视频在线免费观看 欧美视频免费一| 国产乱码77777777| 99久久精品国产导航| www.av片| 国产精品x8x8一区二区| 欧美日韩福利电影| 国产特级黄色片| 国产精品福利一区| 亚洲精品久久久中文字幕| 九九视频精品全部免费播放| 91福利视频网| 午夜在线视频观看| 五月综合激情网| 日本三级日本三级日本三级极| 欧美黄污视频| 99在线影院| 久久大胆人体| 欧美成人性福生活免费看| 欧美日韩精品亚洲精品| 国产suv精品一区二区6| bt天堂新版中文在线地址| 天堂精品久久久久| 欧美激情久久久| 成人毛片在线免费观看| 精品av在线播放| 97人妻天天摸天天爽天天| 亚洲在线国产日韩欧美| 欧美一区二区在线视频观看| 卡通欧美亚洲| 中文字幕亚洲无线码在线一区| 亚洲熟女乱色一区二区三区久久久| 国产精品人人做人人爽人人添| 国产又大又黄又猛| 91偷拍一区二区三区精品| 91视频免费在线| 爱情岛论坛亚洲品质自拍视频网站| 精品三级在线看| 国产一级特黄aaa大片| 99精品久久久久久| 久久久久久三级| 国产精品x453.com| av日韩免费电影| 亚洲女同av| 日韩在线视频观看| 亚洲av永久纯肉无码精品动漫| 亚洲成va人在线观看| 香蕉视频黄色在线观看| 日日噜噜夜夜狠狠视频欧美人| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 伊人久久大香| 国模吧一区二区| 可以免费看污视频的网站在线| 在线观看av一区二区| 欧美大片xxxx| 国产九色精品成人porny| 国产极品粉嫩福利姬萌白酱| 精品国产一区二区三区四区| 亚洲a在线观看| 麻豆免费在线| 亚洲精品少妇网址| 国产又黄又粗又长| 欧美日韩加勒比精品一区| 黄色免费一级视频| 高潮精品一区videoshd| 成人精品视频一区二区| 欧美在线高清| 天堂av一区二区| 77成人影视| 国产日产亚洲精品| 91桃色在线| 日韩亚洲欧美中文在线| 亚洲aⅴ乱码精品成人区| 欧美久久婷婷综合色| 丁香六月婷婷综合| 一区二区三区在线视频观看58 | 国产精品电影观看| 久久亚洲资源| 久久精品视频在线观看| 日本又骚又刺激的视频在线观看| 欧美在线999| 在线免费观看毛片| 亚洲欧美偷拍另类a∨色屁股| 粉嫩av蜜桃av蜜臀av| 国产不卡在线一区| 亚洲人视频在线| 日日摸夜夜添夜夜添国产精品| 日本欧美视频在线观看| 亚洲欧美偷拍自拍| 天堂资源在线亚洲资源| 色狠狠久久av综合| 99久久久久国产精品免费| 日韩第二十一页| 国产成人+综合亚洲+天堂| av免费不卡| 欧美国产日韩一区二区| 成人短视频在线| 日韩性生活视频| av网在线观看| 一本色道久久综合亚洲精品小说| 色偷偷在线观看| 日韩一区二区三区电影| 国产孕妇孕交大片孕| 欧美色综合天天久久综合精品| 日韩欧美一级视频| 亚洲一区在线看| 欧美日韩免费做爰视频| 亚洲乱码精品一二三四区日韩在线| 我想看黄色大片| 欧美国产亚洲另类动漫| 好吊日免费视频| 2019国产精品| 国产成人av一区二区三区不卡| 97久久超碰国产精品| 中出视频在线观看| 91麻豆福利精品推荐| 国产精品久久不卡| www成人在线观看| 国产精品毛片一区二区| 久久久久国产一区二区三区四区| 我和岳m愉情xxxⅹ视频| 91美女蜜桃在线| 偷拍夫妻性生活| 日本一区二区视频在线| 蜜桃av免费观看| 亚洲三级理论片| 久草免费新视频| 亚洲成人免费在线观看| 欧美福利视频一区二区| 欧美性高潮在线| 亚洲av人无码激艳猛片服务器| 欧美视频在线播放| 国产视频一区二区三| 日韩视频国产视频| 男人天堂网在线视频| 日韩成人中文字幕在线观看| 可以在线观看的av| 丝袜美腿精品国产二区| 成人ww免费完整版在线观看| 国内精品久久久久久| 中文字幕成在线观看| 国产成人啪精品视频免费网| 另类一区二区| 不卡一区二区三区视频| 欧美深夜视频| 亚洲国产午夜伦理片大全在线观看网站 | 日本一级黄视频| 亚洲人www| 爆乳熟妇一区二区三区霸乳| 老司机免费视频一区二区| 欧美在线a视频| 99精品视频免费在线观看| 快灬快灬一下爽蜜桃在线观看| 亚洲男同性恋视频| 成人免费区一区二区三区| 欧美天天综合网| 亚洲爱爱综合网| 国产亚洲精品久久久久久牛牛| 中文字幕在线播放| 欧美激情伊人电影 | 色偷偷成人一区二区三区91| 国产又大又粗又硬| 日韩高清a**址| 免费高清完整在线观看| 91成人精品网站| 精品一区二区三区免费看| 欧美日韩精品不卡| 久久久久久久久久久久久久| 无码aⅴ精品一区二区三区浪潮| 精品在线播放免费| 草草影院第一页| 亚洲国产你懂的| 一级黄色片免费看| 亚洲免费成人av电影| av免费在线网站| 日韩av理论片| 精品少妇3p| av中文字幕av| 美国一区二区三区在线播放| 国产亚洲色婷婷久久99精品91| 亚洲三级视频在线观看| 中国老头性行为xxxx| 日韩大片在线观看视频| 中文字幕在线观看播放| 国产精品久久激情| 欧美亚洲国产日韩| 成年丰满熟妇午夜免费视频 | 亚洲sss综合天堂久久| 日韩美女毛片| 日韩精品视频在线观看视频| 极品少妇xxxx精品少妇| 91资源在线播放| 在线观看三级视频欧美| 无码国产色欲xxxx视频| 欧美福利视频在线观看| 57pao成人永久免费| 亚洲精品中文字幕在线| 丝袜脚交一区二区| 国产亚洲无码精品| 黄网动漫久久久| 欧美视频一二区| 色综合久久久888| 欧美一级大片在线视频| 日韩视频在线免费播放| 蜜臀av一区二区| av永久免费观看| 91久久免费观看| 黄色国产在线| 国产成人精品日本亚洲| 国产精品三级| 少妇性l交大片| 国产色婷婷亚洲99精品小说| 天堂网视频在线| 国产亚洲精品一区二555| 欧美成人精品三级网站| 日本午夜精品一区二区三区| 天堂久久一区二区三区| 韩国女同性做爰三级| 91福利小视频| 一区二区高清不卡| 成人高清视频观看www| 久久久久久久久99精品大| 亚洲一二三不卡| 亚洲综合丝袜美腿| 狠狠躁日日躁夜夜躁av| 海角国产乱辈乱精品视频| 国内精品国产成人国产三级粉色| 久久久久久免费看| 久久只精品国产| 免费黄色片视频| 俺去了亚洲欧美日韩| 国产一区二区三区| 免费网站永久免费观看| 92精品国产成人观看免费| 无码人妻久久一区二区三区 | 国产一级视频在线| 亚洲精品乱码久久久久久金桔影视| 日韩影院在线| 天天久久人人| 国产成人综合在线观看| 国产a∨精品一区二区三区仙踪林| 国产午夜精品视频免费不卡69堂| 日本一区二区中文字幕| 99er在线视频| 久久这里只有精品6| 一级特黄aaaaaa大片| 欧美极品在线视频| 亚洲最大在线| 国产三级精品三级在线| 午夜精品久久久久久久久久久| 国产乱视频在线观看| 亚洲自拍小视频| 噜噜噜久久亚洲精品国产品小说| 国产黄a三级三级| 精品国产91乱码一区二区三区| 欧美电影网站| 国产日韩第一页| 久久亚洲精精品中文字幕早川悠里 | 亚洲国产导航| 香蕉久久久久久久| 精品国产髙清在线看国产毛片| 久久精品女人天堂av免费观看| 欧洲xxxxx| 国产午夜精品一区二区| 好吊色视频一区二区| 国产欧美在线播放| 99精品国产福利在线观看免费| 日本高清黄色片| 日韩精品高清在线| 日本一区二区三区视频在线看| 欧美性久久久久| 亚洲一线二线三线视频|