家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
高级前端?进阶
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小时内与您取得联系。