htmx的前身是intercooler.js,一个基于jQuery构建的库,通过HTML属性添加行为。
对于不熟悉的开发者来说,jQuery是一个历史悠久的JavaScript库,在浏览器实现非常不一致、JavaScript缺乏许多现代便捷API和功能的时代,它大大简化了跨平台JavaScript的编写。
如今,许多Web开发者认为jQuery是“遗留软件”。尽管这种观点有其道理,但jQuery目前仍被75%的公共网站使用,这个数字远超其他JavaScript工具。
为什么jQuery能保持如此普遍的使用?
我们认为以下三个技术原因是其持续成功的关键:
当然,这是一个荒谬(且傲慢)的说法,但这是htmx团队努力追求的一个理想。
特别是,我们希望效仿jQuery的这些技术特性,使其成为Web开发者工具包中低成本、高价值的补充。Alex在“构建百年Web服务”中讨论过这一点,我们希望htmx能成为这种用例的有用工具。
使用jQuery构建的网站可以长期在线,使用htmx构建的网站也应该具备相同(或更好)的能力。
未来,htmx的开发将以其现有用户为核心。
如果你已经是htmx的用户,或者正在考虑成为其中一员,以下是这意味着什么。
我们将努力确保htmx在API和实现上都非常稳定。这意味着接受并记录当前实现的特性。
用户升级htmx(即使是从1.x到2.x)时,应期望功能与之前保持一致。
在适当的情况下,我们可能会添加更好的配置选项,但不会更改默认值。
我们将越来越倾向于不接受库核心中的新功能提案。
人们不应该感到需要随时间升级htmx的压力,除非有特定的bug需要修复。他们应该放心,2025年编写的htmx代码在2035年及以后看起来会非常相似。
当新的浏览器功能可用时,我们会考虑新的核心功能,例如我们已经在支持的浏览器上使用实验性的moveBefore()
API。
然而,我们期望大多数新功能通过htmx的扩展API来探索和交付,并会在适当的情况下增强扩展API的能力。
我们的发布计划将大致按季度进行。
htmx不会有强制升级的压力,也没有必要监控htmx发布以获取重大功能变更,就像jQuery一样。如果htmx 1.x对你来说运行良好,就没有必要升级到2.x。
htmx的目标不是成为构建Web应用和服务的全面解决方案:它泛化了超媒体控件,仅此而已。
这意味着改进htmx的一个重要方式(也是还有许多工作要做的方式)是帮助改进人们与htmx结合使用的工具和技术。
这样做可以在不改变htmx本身的情况下,显著提高其有用性。
虽然htmx为你的HTML提供了一些新工具,但它对其他重要的网站构建方面没有强制意见。htmx的一个旗舰特性是它不规定你使用什么后端或数据库。
htmx与多种后端兼容,我们希望帮助超媒体驱动开发在所有后端上更好地工作。
htmx已经帮助改进的超媒体生态系统的一部分是模板引擎。当我们首次撰写关于“模板片段”如何简化部分页面替换的定义时,这在模板引擎中还是一个相对罕见的功能。
如今,片段已经非常普遍,那篇文章经常被引用为构建该功能的灵感来源。
还有许多其他方法可以改进基于超媒体的应用编写体验,我们将继续致力于识别和推广这些努力。
尽管htmx未来不会发生巨大变化,但我们将继续积极推广超媒体的理念。
特别是,我们正尝试通过Triptych项目将htmx的理念推入HTML标准本身。在理想情况下,htmx的功能将融入Web平台本身。
当然,今天编写的htmx代码将永远有效,但从长远来看,可能不再需要包含该库即可通过超媒体实现类似的UI模式。
在intercooler文档的结尾,我们这样写道:
许多JavaScript项目以令人眼花缭乱的速度更新。Intercooler不是这样。
这不是因为它已经死亡,而是因为它(大部分)是正确的:基本理念是正确的,实现至少足够正确。
这意味着项目不会有持续的活动和变动,而是一种管理关系:现在的主要目标是不要搞砸它。文档会改进,测试会增加,边缘会添加一些小而新的声明性功能,但不会有大规模重写或持续更新。这与整个软件行业,尤其是前端世界的可笑变动形成鲜明对比。
Intercooler是Web开发的坚固可靠工具。
抛开第三段末尾的讽刺,这种思考非常适用于htmx。事实上,可能更适用,因为htmx是一个独立的软件,受益于intercooler.js的经验(和错误)。
我们希望htmx能以自己微小的方式,加入像jQuery这样的巨人之列,成为构建你的百年Web服务的坚固可靠工具。