htmx 的替代方案

Carson Gross

htmx 只是众多采用 hypermedia oriented 方法构建 Web 应用的库和框架之一。我之前说过,我认为 htmx 的理念 / hypermedia 比 htmx 作为实现更重要。

以下是我最喜欢的这些理念的其他实现,我认为它们值得您考虑:

Unpoly

Unpoly 是一个优秀的、成熟的前端框架,已在(尤其是 Ruby 社区中)被广泛使用超过十年。它提供了一流的 progressive enhancement ,并具有许多有用的概念,如 layers 和复杂的 form validation

我采访了作者 Henning Koch,在这里

您可以在 这里 查看使用 Unpoly 的演示应用。

Triptych

Triptych 是一组 三个提案 ,用于将更通用的超媒体控件直接引入 HTML 规范:

正在进程中 被引入 WHATWG 以纳入 HTML 规范。

该项目包括一个 polyfill,可以立即使用来实现基于该提案的应用。

fixi.js

fixi.js 是 htmx 团队对 generalized hypermedia controls 的最小化实现,专注于尽可能小,并 省略 htmx 中发现的许多功能。

它旨在尽可能小(~3.5k 未压缩 & 未缩小,~1.3k 压缩)同时仍可读和可调试,因此可以直接包含在项目中,而无需任何转换。

Datastar

Datastar 最初是 htmx 的 TypeScript 重写提案,并使用现代工具链。它最终成为自己的项目,并采用 SSE-oriented 方法进行超媒体。

Datastar 将 htmx 和 Alpine.js 中的功能结合成 一个单一的、整洁的包,比 htmx 更小。

您可以在 这里 查看许多 Datastar 的实际示例。

Alpine-ajax

说到 Alpine(这是一个常与 htmx 一起使用的库),您应该看看 Alpine AJAX,这是一个 Alpine 插件,它将类似 htmx 的概念直接集成到 Alpine 中。

如果您已经是 Alpine 的爱好者,Alpine AJAX 可以让您留在那个世界。

您可以在 这里 查看许多 Alpine AJAX 的实际示例。

Hotwire Turbo

TurboHotwire Web 开发技术集的组件,由 37Signals 提供,该公司以 Ruby on Rails 闻名。它是一个精炼的前端框架,在 Rails 社区中被广泛使用,但也可以与其他后端技术一起使用。

一些对 htmx 有不良体验的人 喜欢 turbo

htmz

htmz 是一个出色的、微小的库,它利用了锚点和表单已经具有 target 属性的事实,该属性可以针对 一个 iframe

这结合 location hash,用于允许 generalized transclusion

这是该库的 整个 源代码(我不是开玩笑):

  <iframe hidden name=htmz onload="setTimeout(()=>document.querySelector(contentWindow.location.hash||null)?.replaceWith(...contentDocument.body.childNodes))"></iframe>

太棒了!

TwinSpark

TwinSpark 是由 Alexander Solovyov 创建的库,类似于 htmx,并包括诸如 morphing 的功能。

已在生产中使用 在每日用户超过 100k 的网站上。

jQuery

最后,好老的 jQueryload() 函数,它将给定 URL 加载到元素中。这个方法是 intercooler.js 的灵感来源之一,该库是 htmx 的前身。

它非常简单使用:

  $( "#result" ).load( "ajax/test.html" );

如果您已经在使用 jQuery,这可能就足够满足您的需求了。

结论

我希望如果 htmx 不适合您的应用,这些其他库中的一个可能有助于您利用超媒体模型。目前超媒体领域有很多令人兴奋的事情正在发生,这些库各自都为此做出了贡献。

最后,如果您有时间,请在 Github 上给它们(尤其是较新的那些)一个星:作为开源开发者,我知道 Github 星是最好的心理激励之一,有助于让我继续前进。

</>