您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > HTML

Htmx,它到底是框架还是库?

时间:2024-03-28 15:51:44  来源:今日头条  作者:前端达人

在最近的前端开发技术的探讨中,htmx经常成为热议的话题。一些人批评它,认为尽管htmx批评现代前端框架过于复杂,但它自己却似乎也是一个复杂的框架。这种看法值得我们深入思考。因为当你将任何第三方代码引入你的项目时,无论是htmx还是其他,都意味着你需要理解并维护它,尤其是在升级的时候。所以,让我们仔细分析一下这种批评,并探究htmx在解决它所宣称的问题时的实际表现。

库与框架:有何不同?

关于htmx是库还是框架的讨论,常常出现在争论之中。有人辩称htmx实际上是一个库,而不是框架。但这种说法可能不太准确。

“框架”这个词在技术上并没有一个严格的定义,它和“库”之间的界限并不是那么明显。但我们还是可以尝试去区分它们:

  • 库(Library):这是一种API对应用程序其他部分影响不大的第三方代码。
  • 框架(Framework):这种代码的API则决定了应用程序的整体结构。

这个比喻可能会更加形象:库就像是你添加到机器中的齿轮,而框架则像是一个你通过定制齿轮来控制的预制机器。

这种区别之所以重要,是因为它关系到代码的可替换性。比如,一个使用了CSV解析库的JAVAScript服务可以相对容易地更换另一个CSV解析库;但如果是使用了NextJS这样的框架,服务可能就会在整个生命周期中依赖于NextJS,因为大量代码都是基于与NextJS构件的交互编写的。

因此,如果你的服务是基于某个框架构建的,它的有效寿命就与该框架的有效寿命紧密相连。如果那个框架被废弃、不受欢迎或难以维护,那么修改你的项目就会变得越来越困难,直到最后你不得不放弃对它的修改,并可能整个项目被搁置。

这正是人们在问“htmx只是另一个JavaScript框架吗?”时的担忧所在。他们不希望自己投入到一个很快就会过时的系统中,就像过去很多Web开发框架那样。

htmx:框架还是更多?

尽管社区对此存在争议,但从我个人的角度看,htmx在大多数使用场景中显然更接近于一个框架。当然,这也取决于你如何使用它。

当你在项目中使用htmx时,你会在html中包含htmx的属性(比如hx-post,hx-target),编写以htmx格式化数据(带有特定请求头)来调用的端点,并从这些端点返回htmx期望的格式化数据(带有hx-*控制的HTML)。所有这些属性、头部和端点的相互作用,创建了一个通过网络请求使元素进入和退出DOM的系统。

如果你在网站的许多网络请求中使用htmx,那么引入htmx对项目结构的影响是显著的,从如何构建前端标记到端点进行的数据库查询,htmx的加入都会对整个应用程序架构产生深远影响。这种影响是框架式的,意味着一旦采用了htmx,就不容易被替换掉。

当然,你也可以选择以更类似于库的方式使用htmx,仅在网页的某些部分添加动态功能。这就像你可以用类似库的方式使用React,但这并不意味着React不是一个框架。实际上,很多开发者在他们的应用中使用htmx,都是在遵循htmx的框架式要求,将其作为构建超媒体应用的一个框架。

使用htmx最有效的方式是顺应它的优势。例如,你当然可以选择发送JSON格式化的表单体,但更简单的做法是使用
Application/x-www-form-urlencoded格式,并编写一个能接受这种格式的端点。同样地,你也可以编写一个跨多个不同客户端重用的端点,但更简单的做法是将你的数据和超媒体API分离到不同的URL。是的,htmx可以作为库使用,但让它成为你的框架可能会更好。

htmx的独特优势:HTML

尽管htmx在很多情况下被当作一个框架使用,但这并不意味着它就是“另一个JavaScript框架”。htmx最大的优势在于它的核心是HTML。

如果你将htmx当作框架来使用,那么从一个角度来看,它确实是基于大约4000行JS实现的。但从另一个更重要的角度来看,htmx并不是:不像React、Svelte、Solid等让你编写JS(X)并将其转换为HTML的框架,htmx让你直接编写HTML。这种方式避免了很多其他框架随着时间推移可能带来的维护问题。

例如,当你想升级或更改某些依赖时,如果你使用的框架与这种更改不兼容,代码库往往会遇到困难。Java是一个著名的例子——有无数行Java代码因为升级Spring太难而永远停留在Java 8。但当你使用htmx时,你不会遇到这个问题,因为htmx是一个零依赖的、客户端加载的JavaScript文件,它不会与你的服务器依赖的任何构建过程或依赖链发生冲突。

另一个重要优势是,浏览器直接渲染HTML,因此使用htmx时不需要任何编译器或转译器。虽然许多htmx用户喜欢用JSX来渲染API响应,但htmx与传统的模板引擎兼容性良好,可以轻松移植到任何语言。Django和RAIls在2008年就很流行,到今天仍然如此——htmx也可以与它们无缝集成。htmx的一个反复出现的主题是,它与新旧开发工具都很好地搭配,因为这些工具的共同点是HTML,而htmx正是用来编写HTML的。

将用户的主要工作聚焦在HTML上,而不是JS上,带来了许多优势。这种方式简化了学习过程,使得开发者不必为了追随JavaScript框架的最新趋势而疲于奔命。无论何时

编写你的htmx应用程序,htmx表单的行为始终与普通HTML表单的定义方式大致相同:使用<form>标签。通过htmx添加的网络功能,例如使用PUT请求并控制响应的去向,都是对传统HTML表单的增强,但在验证、输入、标签、自动完成等方面,你依然享受到标准<form>元素的默认行为。

更重要的是,因为htmx仅在网络请求和DOM替换这一狭窄领域扩展了HTML,所以你编写的大多数“htmx”代码实际上就是普通的HTML。这意味着当你遇到可以通过原生HTML元素解决的问题时,你的代码将更加长青。例如,当你需要一个可折叠的div时,如果没有复杂的状态管理机制,你可能会选择使用<details>元素,而不是编写复杂的JavaScript。这种方式使得学习Web开发变得更加友好,因为你的大部分知识将随着HTML的持续有效而保持相关性。

从这个角度来看,htmx更像是JQuery而不是React(实际上,htmx的前身intercooler.js是一个JQuery扩展)。但它在JQuery的基础上做了改进,采用了声明式、基于HTML的接口:JQuery要求你在<script>标签中指定AJAX行为,而htmx只需要一个简单的hx-post属性。

总的来说,虽然htmx可以作为一个框架使用,但它在很多方面都与传统的JavaScript框架不同,它的这些特点使得它更加贴近Web的核心语义——HTML。并且,由于Web的向后兼容性保证,htmx将能够从这些语义的改进中受益,而无需用户进行额外工作。如果你想构建一个持久的网站,这些特性使得htmx成为比许多同代框架更好的选择。

结语

通过这篇对htmx的深入探讨,我们可以看到,htmx在技术上介于库和框架之间,它强调使用HTML来驱动应用的行为,而非依赖复杂的JavaScript结构。这种方法降低了学习曲线,增强了代码的可维护性和可移植性。对于那些寻求简化Web开发流程、减少对复杂JavaScript框架的依赖的开发者来说,htmx提供了一个有趣且有效的选择。

无论htmx被视为库还是框架,其核心价值在于简洁性和对HTML的重视,这使得它在当前的Web开发生态中占有一席之地。这也提醒我们,在追求前沿技术的同时,不应忽视基础技术的力量。在复杂性和现代化的交错中,找到适合自己项目的平衡点,是每个Web开发者的重要任务。



Tags:Htmx   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Htmx,它到底是框架还是库?
在最近的前端开发技术的探讨中,htmx经常成为热议的话题。一些人批评它,认为尽管htmx批评现代前端框架过于复杂,但它自己却似乎也是一个复杂的框架。这种看法值得我们深入思考。...【详细内容】
2024-03-28  Search: Htmx  点击:(16)  评论:(0)  加入收藏
前端工作方式要换了?HTMX简介:无需JavaScript的动态HTML
HTMX允许你使用扩展的HTML语法代替 JavaScript 来实现交互性。HTMX 在标记中直接为你提供HTTP 交互,并支持许多其他交互需求,无需求助于 JavaScript。这是一个有趣的想法,可能...【详细内容】
2023-10-19  Search: Htmx  点击:(292)  评论:(0)  加入收藏
HTMX简介:无需借助JavaScript的动态HTML
译者 | 布加迪审校 | 重楼HTML让您可以使用扩展的HTML语法而不是JavaScript来实现交互性。HTMX直接在标记中为您提供了HTTP交互,它支持其他许多交互要求,无需借助JavaScript。...【详细内容】
2023-10-07  Search: Htmx  点击:(367)  评论:(0)  加入收藏
htmx:增强版 HTML 来了!
如今,Web 用户期望得到单页应用(SPA)提供的流畅、动态的体验。然而,创建 SPA 往往需要使用复杂的框架,如 React 和 Vue,学习和使用起来可能比较困难。这就是htmx的用武之地:一种通...【详细内容】
2023-09-03  Search: Htmx  点击:(220)  评论:(0)  加入收藏
Htmx意外走红,我们从React“退回去”后:代码行数减少 67%,JS 依赖项从 255 下降到 9
过去Web非常简单。URL 指向服务器,服务器将数据混合成 html,然后在浏览器上呈现该响应。围绕这种简单范式,诞生了各种Java框架,以前可能需要数月时间完成的一个应用程序基本功能,现在借助这些框架创建相对复杂的项目却只需...【详细内容】
2022-10-18  Search: Htmx  点击:(449)  评论:(0)  加入收藏
▌简易百科推荐
Htmx,它到底是框架还是库?
在最近的前端开发技术的探讨中,htmx经常成为热议的话题。一些人批评它,认为尽管htmx批评现代前端框架过于复杂,但它自己却似乎也是一个复杂的框架。这种看法值得我们深入思考。...【详细内容】
2024-03-28  前端达人  今日头条  Tags:Htmx   点击:(16)  评论:(0)  加入收藏
前端工作方式要换了?HTMX简介:无需JavaScript的动态HTML
HTMX允许你使用扩展的HTML语法代替 JavaScript 来实现交互性。HTMX 在标记中直接为你提供HTTP 交互,并支持许多其他交互需求,无需求助于 JavaScript。这是一个有趣的想法,可能...【详细内容】
2023-10-19  大迁世界  微信公众号  Tags:HTMX   点击:(292)  评论:(0)  加入收藏
HTMX简介:无需借助JavaScript的动态HTML
译者 | 布加迪审校 | 重楼HTML让您可以使用扩展的HTML语法而不是JavaScript来实现交互性。HTMX直接在标记中为您提供了HTTP交互,它支持其他许多交互要求,无需借助JavaScript。...【详细内容】
2023-10-07    51CTO  Tags:HTML   点击:(367)  评论:(0)  加入收藏
htmx:增强版 HTML 来了!
如今,Web 用户期望得到单页应用(SPA)提供的流畅、动态的体验。然而,创建 SPA 往往需要使用复杂的框架,如 React 和 Vue,学习和使用起来可能比较困难。这就是htmx的用武之地:一种通...【详细内容】
2023-09-03  前端充电宝  微信公众号  Tags:htmx   点击:(220)  评论:(0)  加入收藏
加入GitHub Accelerator,htmlx 2.0 要来了!
本文主要向大家介绍 htmlx 加入 GitHub Accelerator,关于 htmlx 的原理,以前有单独发表过文章介绍: 让 React 代码行数减少78%的 htmlx 有这么神?大家有感兴趣的可以阅读,话不多...【详细内容】
2023-08-25  高级前端进阶  今日头条  Tags:htmlx   点击:(362)  评论:(0)  加入收藏
爬虫解析HTML动态JS,技术应用揭秘
在当今互联网时代,大量的信息都储存在了各种网页中。而对于开发者、数据分析师和研究人员来说,获取并分析这些网页中的数据是非常重要的任务之一。然而,随着技术的不断发展,许多...【详细内容】
2023-06-29  反方向的鱼    Tags:HTML   点击:(219)  评论:(0)  加入收藏
利用ChatGPT辅助处理Html数据
使用chatgpt进行辅助编程首先要清晰描述自己需求,生成代码通过不断调试及优化,最终完成任务。有它,对程序员是好事也是坏事。一、确认功能请编程实现以下功能:1.所有html保存在a...【详细内容】
2023-05-31    51CTO  Tags:Html   点击:(421)  评论:(0)  加入收藏
一篇文章带你学会HTML以及最常用的标签
HTML是一种标记语言,用于创建网页。在本文中,我们将介绍HTML的基础知识,代码写入到本地文件,并以.html结尾,双击浏览器打开就可以查看效果。HTML文档结构HTML文档由标签组成,每个...【详细内容】
2023-05-16  你的老师父  今日头条  Tags:HTML   点击:(374)  评论:(0)  加入收藏
HTML代码混淆技巧:让爬虫无法抓取,保护你的网页!
随着互联网的发展,越来越多的网站开始使用爬虫技术来获取数据。但是,有些网站为了保护自己的数据安全,会对HTML代码进行混淆处理,使得爬虫无法直接抓取数据。本文将介绍HTML代码...【详细内容】
2023-04-13  倪沛童    Tags:HTML   点击:(238)  评论:(0)  加入收藏
HTML5第三节 初学者接触列表标签和div标签以及span标签
<ul> <li>为列表标签此为无序列表<type=“?”> <apuare>正方形<circle>空心圆环 <disc>默认 实心园 <ol> <li>为列表标签此为有序列表<type=“?”> <1> <a> <A>等 <dl> <dt>...【详细内容】
2023-02-07  那般热衷是你  今日头条  Tags:HTML5   点击:(225)  评论:(0)  加入收藏
站内最新
站内热门
站内头条