3 ms·
The philosophy of HTMX is not to send JSON, but HTML fragments.
by philipswood 1y ago
The philosophy of HTMX is not to send JSON, but HTML fragments.
- majorchord 1y agoThey didn't mention sending JSON though... and you can absolutely return HTML fragments in a JSON response.
- ncruces 1y agoBut why?
- majorchord 1y agoFetching data from APIs I have no control over, or ones that serve multiple purposes and use a single response format
- philipswood 1y agoPersonally, I wouldn't consider HTMX to be a good fit for those scenarios. Obviously you _could_, and it might even work well, but I think that's using the tool against its grain.
- ncruces 1y agoHTMX uses HTML snippets over the wire to replace HTML elements on the client. It's not supposed to grow to support every use case you can imagine. If you're calling APIs that you have no control over, you do so on your server. That's the entire point of HTMX: the minimal necessary addition to browsers/HTML to allow HTML REST APIs to update pages without full page loads.
- kemayo 1y agoI guess I could see it for decoupling your need to control the API you're using. The case where you have an existing API, whether your own or someone else's, and just want to get a new frontend hooked up to it.
- purerandomness 1y agoJust put any template rendering engine in-between. Htmx is "bring your own backend", but you do have to have a backend, be it Haskell or Zig or Gleam, that talks to your API, and renders HTML.
- purerandomness 1y agoThen what's the point of using HTMX? If you're not sending just exactly the necessary HTML to replace the target's HTML; if you need to parse JSON, then even jQuery would be better suited. The whole idea of HTMX is to get rid of the extra steps.
- majorchord 1y agoI don't always have control over the remote end or due to business reasons the format can't be changed. And since htmx also has template plugins, being able to feed JSON values into it makes sense to me... a similar project, EHTML has this feature.
- yawaramin 1y agoYou would use htmx when you control your backend server. Otherwise, you would use something else.