家好,很高興又見面了,我是"高級前端?進階?",由我帶著大家一起關注前端前沿、深入前端底層技術,大家一起進步,也歡迎大家關注、點贊、收藏、轉發!
高級前端?進階
htmx 使開發者可以使Attribute直接在 HTML 中訪問 AJAX、CSS Transitions、WebSocket 和SSE等前端常用事件,從而使得構建強大功能的現代用戶界面更加簡單。
HTMLX:強大的 HTML 工具
htmx 庫的代碼體積很小,啟動Gzip壓縮后大約~12k,而且無其他依賴,可擴展,兼容 IE11 。更加出彩的是,與React 相比,代碼庫大小減少了 67%。
Carson Gross 創建了一個前端庫 intercooler.js,Slogan是“Ajax With Attributes”,intercooler.js的目標很簡單,目的在于簡化前端 Web 開發的復雜性。 intercooler.js 的新版本在2021年更新到了 2.0 版,作者正式命名為 htmx,也就是本文的主角。
HTMX 試圖通過使用網絡的原始模型來創建應用程序,從而利用 HTML 的強大力量。 使用HTMX的時候,開發人員無需編寫復雜的JS代碼來實現類似的功能,借助于HTMLX屬性即可實現動態內容和更新。比如:進度條、延遲加載、無限滾動、內聯驗證等。
HTMX 不同于 Vue.js 、 React、Angular 等前端框架,需要通過客戶端請求服務端的數據并動態渲染頁面。 使用 HTMX的時候,客戶端發出請求,服務端將返回完整的 Html 并更新頁面。 同時,可以將 HTMX 與任何服務器端技術集成,因為應用程序邏輯主要由后端處理。
如果想在 htmx 中建立一個 WebSocket 連接,可以使用 hx-ws 屬性來完成:
<div hx-ws="connect:wss:/chatroom">
<div id="chat_room">
...
</div>
<form hx-ws="send:submit">
<input name="chat_message">
</form>
</div>
connect 聲明建立了連接,而 send 聲明告訴表單在提交時將值提交到套接字socket。
服務器發送事件是服務器向瀏覽器發送事件的一種方式。 它為服務器和瀏覽器之間的通信提供了比 websockets 更高級別的機制。
如果想讓一個元素通過 htmx 響應服務器發送的事件,需要做兩件事:
<body hx-sse="connect:/news_updates">
<div hx-trigger="sse:new_news" hx-get="/news"></div>
</body>
假設希望一個元素的請求替代另一個元素的請求,或者想要等到另一個元素的請求完成后再發送另外一個請求,可以使用 hx-sync 屬性。 比如下面的代碼:
<form hx-post="/article">
<input id="title" name="title" type="text"
hx-post="/validate"
hx-trigger="change"
>
<button type="submit">提交</button>
</form>
在不使用 hx-sync 的情況下,當填寫并提交表單時,它會同時觸發對 /change 和 /validate 的兩個并行請求。使用 hx-sync="closest form:abort" 后,將監視表單上的請求并在存在表單請求時停止輸入請求,或者在輸入請求運行時啟動:
// 同步請求示例
<form hx-post="/article">
<input id="title" name="title" type="text"
hx-post="/validate"
hx-trigger="change"
hx-sync="closest form:abort"
>
<button type="submit">提交</button>
</form>
如果想讓一個元素輪詢給定的 URL 而不是等待一個事件,可以使用帶有 hx-trigger 屬性的 every 語法:
<div hx-get="/news" hx-trigger="every 2s"></div>
這相當于告訴 htmx 每 2 秒,向 /news 發出 GET 請求并將響應加載到 div。 如果想停止從服務器響應中進行輪詢,可以使用 HTTP 響應碼 286 進行響應,該元素將取消輪詢。
另一種可用于在 htmx 中實現輪詢的技術是“負載輪詢”,其中元素指定加載觸發器和延遲,并用響應替換自身:
<div hx-get="/messages"
hx-trigger="load delay:1s"
hx-swap="outerHTML"
>
</div>
負載輪詢在輪詢有終點的情況下很有用,在該點輪詢終止,例如當您向用戶顯示進度條時。
HTMX vs. React
從Github數據來看,目前React的star已經達到了202k,而htmlx只有10.7k,這個差距確實還很大,但是考慮到React項目創建已經11年,而htmlx只有3年,能達到10.7k已經確實不易。
接下來看看NPM的周下載量數據。
React的周下載量達到了驚人的16,759,035,而htmlx只有17,679,這個差距就像上面star的差距一樣明顯。當然,正如上文所說,htmlx項目的創建時間相對較短,所以在知名度、生態方面肯定還沒法和React同日而語,但是17,679的周下載量確實也表明已經囊括了很大一部分用戶群。
然后回到大家可能都比較關心的代碼體積上,bundlephobia的官方數據表明htmlx壓縮后達到了37.8k(遠大于React@18.2.0的6.4k),即使啟動Gzip壓縮后也達到了13.2k(遠大于React@18.2.0的2.5k)。所以,可以從側面反應出,htmlx通過屬性的方式確實使得代碼行數減少了,但是庫本身的代碼體積卻在悄悄增大。
從總體來看,HTMX 確實比較有意思,特別是已經習慣了jQuery用法的開發者,可以在下一個項目中嘗試使用HTMX。 本文介紹了如何使用HTMLX建立Websocket 、建立服務端發送事件SSE 、HTMX 同步請求 、輪詢 、負載輪詢等示例。同時對比了React和htmlx的開發者相關數據。
因為筆者也沒有在生產項目中使用、部署過HTMLX項目,所以很多探索也就點到為止,但是文末的參考資料提供了大量優秀文檔以供學習,如果有興趣可以自行閱讀。
https://www.infoq.cn/article/veskosrskc9xgiyygyku
https://github.com/bigskysoftware/htmx
https://thenewstack.io/htmx-html-approach-to-interactivity-in-a-javascript-world/
https://htmx.org/docs/
天上班前二十分鐘都是學習的時間,雖然這些內容都學習了好多次,但是溫故而知新,html/htm/shtml它們仨的區別你知道嗎?雖然網絡推廣、網絡營銷不是開發網站的,但是基本的代碼標簽還是需要知道的,有利于我們做網站的SEO優化,所以是必不可少的。
百度百科解釋:
htm與.html并沒有本質上的區別,表示的是同一種文件,不同的命名只是因為于不同的環境。 在Unix、Windows NT和Windows 95操作系統中,由于都支持長文件名格式,超文本文件文件名和擴展名長度可以不受限制,但擴展名必須是.HTML或 是.HTM。Unix系統的擴展名必須為.HTML,如果使用了三個字符的擴展名.HTM,那么當網上的Unix系統用戶瀏覽你的超文本文件時,只能在屏幕上看到超文本的源文件,而不是展示的結果;若訪問你的用戶系統是Windows 3.X、Windows NT 或Windows 95,那么文件擴展名是HTML和HTM是一樣的。所以Unix系統用戶建立超文本時,文件擴展名一定要采用.HTML。
簡單可以理解如下:
1、.htm與.html沒有本質上的區別,表示的是同一種文件,只是適用于不同的環境之下。
2、DOS僅能識別8+3的文件名,所以*.htm的命名方法可以被DOS識別,而*.html的文件命名方式不能被之識別。
3、在UNIX系統中,網頁必須使用.html擴展名,如果是htm,在瀏覽器中打開時則出現源代碼;Windows中支持兩種擴
展名。也可以說,htm和html是Windows和UNIX對抗的產物。
4、如果在網頁中同時存在index.html與index.htm,這是瀏覽器將先解釋index.html。
其它理解:
就是說實際上一樣的,比方有個html的文件,你重命名為htm也沒關系,IE還是能識別他并且打開。 但是我們在瀏覽器地址欄打開某個網址的時候,htm和html是完全不同的兩個文件了,指向了不同的服務器地址,其實說白了就是后綴名不同而已, 比如在電腦上搜索*.htm與*.html搜索出來不同。
百度百科解釋:
如果用一句話來解釋就是:SHTML 不是HTML而是一種服務器API,shtml可通過服務器動態產成html.
雖然兩者都是超文本格式,但shtml是一種用于SSI技術的文件。也就是Server Side Include--SSI服務器端包含指令。
如果Web Server有SSI功能的話(大多數(尤其是基于Unix平臺)的WEB服務器如Netscape Enterprise Server等均支持SSI命令)。
會對shtml文件特殊招待。先掃一次shtml文件看有沒有特殊的SSI指令存在。有就按Web Server設定規則解釋SSI指令。解釋完后跟一般html一起調去客戶端。
html或htm與shtml或shtm的關系是什么?
html或者htm是一種靜態的頁面格式,也就是說不需要服務器解析其中的腳本,或者說里面沒有服務器端執行的腳本,而shtml或者shtm由于它基于SSI技術,當有服務器端可執行腳本時被當作一種動態編程語言來看待,就如asp、jsp或者php一樣。
當shtml或者shtm中不包含服務器端可執行腳本時其作用和html或者htm是一樣的。
以上分享文字是個人原創觀點,如有問題可評論討論學習,如涉及到商業等法律問題與本人無關。
是搜狐文化第65期薦展
為便于公眾查詢瀏覽,國家文物局組織對各地制作的網上博物館展覽進行了匯總,現推送第三批網上展覽資源。具體展覽如下,復制鏈接或搜索官網即可“云看展”:
101.律動世界——化學元素周期表專題展
中國科學技術館
https://xnmy.cdstm.cn/vr/78808/
102.中國人民解放軍建軍90周年主題展
中國人民革命軍事博物館
http://www.jb.mil.cn/zlcl/ztzl/jj90zn/
103.《偉大勝利 歷史貢獻——紀念中國人民抗日戰爭暨世界反法西斯戰爭勝利70周年主題展覽》虛擬展覽
中國人民抗日戰爭紀念館
http://www.1937china.com/kzgdata/clzl/vrzl/wdsllsgx/tour.html
104.筆墨書香——中國印刷文化探源專題展
中國印刷博物館
http://pano.printingmuseum.cn/YinBo_BiMoShuXiang/pano/index.html
105.光輝的歷程——中華全國婦女聯合會成立70周年紀念展
中國婦女兒童博物館
https://www.kuleiman.com/114341/index.html?from=singlemessage&isappinstalled=0
106.雷鋒,一個汽車兵的任務
北京汽車博物館
http://ls.kanzhanlan.cn/wx/ygqcbdgs/1/index.html
107.海洋與天文
天津國家海洋博物館
https://www.hymuseum.org.cn/uploadfiles/360data/haiyangyutianwen/?scene_id=31259669
108.絲綢之路自然大觀
天津自然博物館
http://demo.720a.com/tianjinziranbowuguan/index.html
109.山河相依 窯火輝映——晉陜豫冀宋遼金元陶瓷特展
運城博物館
http://720.sxycbwg.com/shxyyhhy/int/
110.遺我雙鯉魚——館藏明代書畫家書札精品展
上海博物館
https://www.shanghaimuseum.net/museum/shuangli/index.html
111.正義的審判——紀念東京審判宣判71周年圖片展
侵華日軍南京大屠殺遇難同胞紀念館
https://720yun.com/t/8avkuliy5p7?scene_id=37846583
112.審計博物館基本陳列
審計博物館
http://www.audit.gov.cn/museum//static/shenji/index.html
113.絲路歲月:大時代下的小故事
中國絲綢博物館
http://www.chinasilkmuseum.com/yz/info_18.aspx?itemid=27318
114.牦牛走進浙江——高原牦牛文化展
浙江自然博物院
http://audio.taoart.com/fullview/zrbwy/2/?from=singlemessage
115.華僑旗幟 民族光輝
陳嘉庚紀念館
http://www.tankahkee.cn/Exhibition/Basic/11026.html
116.“閩臺緣”主題陳列
福建中國閩臺緣博物館
http://vr1.mtybwg.org.cn/
117.奮進的山東——慶祝中華人民共和國成立70周年成就展
山東博物館
http://www.sdmuseum.com/fjdsd/index.html
118.阿富汗國家寶藏展
鄭州博物館
http://afh.hnzzmuseum.com/?scene_id=17436508
119.從地中海到中國——平山郁夫藏絲綢之路文物展
洛陽博物館
http://vr.sichouzhilu.museumcloud.com.cn/
120.甲骨文發現120年系列展——商代文字展
安陽博物館
http://www.aybwg.org/anbozhanlan/show.php?itemid=74
121.鼎盛中華——中國鼎文化特展
二里頭夏都遺址博物館
https://720yun.com/t/15vkuyrlr17#scene_id=39583514
122.紅色大別山
鄂豫皖蘇區首府革命博物館
http://www.hongsedibiao.com/web/720view/hn/eywsq/index.html?from=singlemessage&isappinstalled=0
123.根·魂——中華文明物語
湖南省博物館
http://www.hnmuseum.com/sites/default/files/statics/online-exhibitions/culture/?scene_id=29859685
124.湘江北去——長沙古代歷史文化陳列
長沙博物館
http://beixinbc.com/cbwg/index.html?startscene=scene13
125.翟門生的世界
深圳市南山博物館
http://webapp.vizen.cn/museum_exhibition/indexpc.html?albumid=8E6F73AEE3324F2BBB0D4A7D09E4FA11&online=on&from=singlemessage&isappinstalled=0
126.偉大壯舉 輝煌歷程
重慶三峽移民紀念館
http://www.cqsxymjng.cn/360vr/wdzj/tour.html
127.平北抗日烈士紀念園數字博物館(PC端)
平北抗日烈士紀念館
http://www.bjyq.gov.cn/yanqing/xwdt/ztlb/2197720/index.shtml
128.北京市大葆臺西漢墓博物館3D在線展廳
北京市大葆臺西漢墓博物館
http://gzh.dbtbwg.org.cn:8080/wechat/cultural/list.htm
129.遼中京博物館虛擬展覽
遼中京博物館
http://nm.comeup.com.cn:8088/nm/lzjbwg/index.html
130.內蒙古自治區將軍衙署博物院虛擬博物館
內蒙古自治區將軍衙署博物院
http://nm.comeup.com.cn:8088/nm/jjys/index.html
131.鄂爾多斯青銅器博物館全景展廳
鄂爾多斯青銅器博物館
https://720yun.com/t/212jrghasf4?from=timeline&isappinstalled=0
132.中華人民共和國成立70周年——國旗、國徽、國歌專題展
東北烈士紀念館
https://view.vra.cn/#/panoview/70616
133.魯迅故居虛擬瀏覽
上海魯迅紀念館
http://preview.bluenion.com/luxun_home/Luxun_home.html
134.陳云紀念館720°全景漫游
陳云紀念館
http://wgj.sh.gov.cn/images/odb/360/vtour/index.html
135.南京博物院虛擬展覽
南京博物院
http://fight.njmuseum.com/index.html
136.南京中國科舉博物館虛擬博物館
南京中國科舉博物館
http://117.81.233.142:8081/vr/examples/index.html
137.八大山人紀念館網上展廳
八大山人紀念館
https://720yun.com/t/qqw27w4ly3sd93zwi9?from=singlemessage&isappinstalled=0
138.安徽中國徽州文化博物館全景展廳
安徽中國徽州文化博物館
https://720yun.com/t/310jz0wnkn2?scene_id=8706118
139.臨沂市博物館全景漫游
臨沂市博物館
http://vr.lywww.com/anli/bowuguan/
140.彭雪楓紀念館全景導覽
河南省鎮平縣彭雪楓紀念館
http://m.360vrsh.com/Home/Store/index.html?sid=5661.html
141.鄂豫皖革命紀念館虛擬展館
鄂豫皖革命紀念館
http://eyw.hnssdzzt.cn/720/
142.忠州博物館網上展館
忠州博物館
https://www.zhongzhoubwg.com/list/42
143.VR漫游夔州館
夔州博物館
https://720yun.com/t/4f6jt0ku5y3?scene_id=13724372
144.自貢恐龍博物館360度全景數字博物館
自貢恐龍博物館
http://www.zdm.cn/display.html
145.貴州航運博物館虛擬展館
貴州航運博物館
http://museum.zhanxun.site/gzhybug/
146.天祝藏族自治縣歷史文明展
天祝藏族自治縣博物館
https://720yun.com/t/b9vkibd9zih?scene_id=37651977#scene_id=37651977
147.北京自然博物館館藏標本
北京自然博物館
http://www.bmnh.org.cn/gzxx/list.shtml
148.偽滿皇宮博物院文物全息展示系統
偽滿皇宮博物院
http://222.169.185.251:8088/
149.“紅色記憶”革命文物平臺
杭州市園林文物局
http://z.hangzhou.com.cn/2019/hsjywspzj/index.htm
150.中山市博物館館藏文物3D展示
中山市博物館
http://www.zsmuseum.cn/3DWW/index.html
以上內容來自國家文物局官方網站:http://www.sach.gov.cn/art/2020/2/6/art_722_158631.html
*請認真填寫需求信息,我們會在24小時內與您取得聯系。