Software:HTMX

From HandWiki
Revision as of 09:45, 28 July 2024 by Importwiki (talk | contribs) (import)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
HTMX
SVGmix-XRp12W-htmx.svg
Original author(s)Carson Gross
Initial releaseNovember 24, 2020; 4 years ago (2020-11-24)[1]
Stable release
1.9.12[2] / 26 April 2024; 7 months ago (2024-04-26)
Written inJavaScript
Size15.7 KB min+gzip[3]
TypeJavaScript library
LicenseBSD 0-clause[4]
Websitehtmx.org

HTMX is an open-source[5] front-end JavaScript library created by Carson Gross as a new version of intercooler.js. It extends HTML with custom attributes that AJAX directly in HTML and with a hypermedia-driven approach. This allows tasks that traditionally required writing JavaScript to be done completely with HTML.

History

HTMX has its roots in intercooler.js, a frontend library created by Carson Gross in 2013. The library aimed to address the complexity associated with AJAX (Asynchronous JavaScript and XML) by introducing a simplified approach using HTML attributes.[6] The intent was to create a framework that was aligned with Roy Fielding's original intent for REST (representational state transfer) - and specifically HATEOAS (hypermedia as the engine of application state). The problem is described in Fielding's blog post "REST APIs must be hypertext-driven" from October 2008.[7][8]

HTMX was created as an improved version of intercooler.js that did not rely on jQuery with version 1.0.0 being released in November 2020.[9] The release of HTMX was a significant milestone for the project, by offering a way to utilize AJAX, CSS transitions, WebSockets, and Server-Sent Events directly in HTML using attributes.[10]

In 2023, HTMX was added to the first cohort of the GitHub Accelerator program, a program the provides open source projects with funding and guidance from members of mature open source projects.[11]

Design and functionality

HTMX enhances HTML elements for creating interactive web applications with a focus on simplicity and leveraging hypertext capabilities. It allows developers to easily add dynamic behavior to their markup using HTML attributes, reducing or even eliminating the need for extensive JavaScript code with large bundles,[12] complex state management or hydration.[13] HTMX can also update specific parts of a webpage without the need to reload the entire page (as would be the case with plain HTML+CSS), which might result in improved user experience and performance, since only a part of the data needs to be re-fetched from the server.[14]

It also challenges the common approach of utilizing JSON as the standard payload for HTTP requests by replacing it with HTML.[6] This is meant to solve the issues related to the performance and cognitive overhead of JSON serialization, deserialization, and subsequent use in the user interface, such as JavaScript and JSON's inability to accurately process numbers greater than 253 or distinguish floating-point numbers from integers and the complexity involved with alternatives to JSON-oriented REST, such as GraphQL or GRPC.[15] Additionally, a potential advantage of HTMX and hypertext-oriented approach in general, is that data retrieved directly from the database does not need to either be in a JSON or JSON-compliant format, such as that used by many document databases or the PostgreSQL's JSON type, or be serialized by the backend only to be then deserialized by the frontend again.[16] The reduced client-side computation also helps to shift the development focus towards the backend, which might result in better client-side performance, albeit at a cost of higher server load, and providing the developers with a simpler way to solve more problems which they would otherwise solve using client-side JavaScript in virtually any other programming language.[17]

The library's design philosophy revolves around a goal to "complete HTML as a hypertext."[18] By leveraging custom HTML attributes prefixed with hx- to trigger AJAX requests to fetch content to update parts of the DOM with, HTMX enables developers to define dynamic behavior directly within their markup, reducing the need for extensive JavaScript code.[19][20] This approach offers a more accessible and intuitive way to build modern user interfaces while avoiding the complexities often associated with traditional JavaScript frameworks.[21]

Community and adoption

Since its inception as intercooler.js and its subsequent evolution into HTMX, the library has gained a significant following within the web development community.[22][23] HTMX has been viewed as a simpler and lighter weight alternative to full-blown JavaScript frameworks like React, Vue.js, and Angular.[24][25] As a result, it has gained a measure of popularity as an alternative to the approach used by most JavaScript frameworks for building dynamic web applications.[26]

HTMX integrations have been developed for various full-stack/backend web frameworks, programming languages and templating engines, including Node.js, Django, Flask, Adobe ColdFusion, ASP.NET, Clojure, and Ruby on Rails.[27] Such libraries are usually matter of nothing more than convenience since HTMX's portable and minimalist design allows it to be integrated with virtually any HTML templating engine.[18]

References

  1. "Release v1.0.0 - HTMX". https://github.com/bigskysoftware/htmx/releases/tag/v1.0.0. 
  2. "Release v1.9.12 - HTMX". https://github.com/bigskysoftware/htmx/releases/tag/v1.9.12. 
  3. "htmx.org v1.9.12" (in en). https://unpkg.com/browse/htmx.org@1.9.12/dist/. 
  4. "htmx/LICENSE". HTMX. https://github.com/bigskysoftware/htmx/blob/master/LICENSE. 
  5. Desai, Milin. "Council Post: Why Every Company Should Be Open-Source Aligned" (in en). https://www.forbes.com/sites/forbestechcouncil/2023/10/25/why-every-company-should-be-open-source-aligned/. 
  6. 6.0 6.1 Melanson, Mike (2022-01-19). "Htmx: HTML Approach to Interactivity in a JavaScript World" (in en-US). https://thenewstack.io/htmx-html-approach-to-interactivity-in-a-javascript-world/. 
  7. Gross, Carson. "Simple AJAX using HTML attributes" (in en). http://intercoolerjs.org/. 
  8. Fielding, Roy T. (20 Oct 2008). "REST APIs must be hypertext-driven » Untangled". https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven. 
  9. "htmx ~ htmx 1.0.0 has been released!". https://htmx.org/posts/2020-11-24-htmx-1-0-0-is-released/. 
  10. "htmx | Technology Radar" (in en-US). https://www.thoughtworks.com/en-us/radar/languages-and-frameworks/htmx. 
  11. Sowles, Kara (2023-04-12). "GitHub Accelerator: our first cohort and what's next" (in en-US). https://github.blog/2023-04-12-github-accelerator-our-first-cohort-and-whats-next/. 
  12. Sheppard, Dennis (2017), "Leveling Up Your PWA" (in en), Beginning Progressive Web App Development (Berkeley, CA: Apress): pp. 243–259, doi:10.1007/978-1-4842-3090-9_12, ISBN 978-1-4842-3089-3, http://link.springer.com/10.1007/978-1-4842-3090-9_12, retrieved 2024-04-30 
  13. "A First Look at HTMX and How it Compares to React" (in en). https://www.builder.io/blog/htmx-vs-react. 
  14. "htmx ~ Documentation". https://htmx.org/docs/#swapping. 
  15. Kleppmann, Martin (2017-03-01). "Formats for Encoding Data" (in en-US). Designing Data-Intensive Applications (epub) (1st ed.). 1005 Gravenstein Highway North, Sebastopol, CA 95472, United States of America: O’Reilly Media. JSON, XML, and Binary Variants. ISBN 9781491903100. 
  16. Shi, Xuanhua; Zhang, Yipeng; Huang, Hong; Hu, Zhenyu; Jin, Hai; Shen, Huan; Zhou, Yongluan; He, Bingsheng et al. (April 2020). "Maxson: Reduce Duplicate Parsing Overhead on Raw Data". 2020 IEEE 36th International Conference on Data Engineering (ICDE). IEEE. pp. 1621–1632. doi:10.1109/ICDE48307.2020.00144. ISBN 978-1-7281-2903-7. https://ieeexplore.ieee.org/document/9101499. 
  17. Eckert, Raphael (2023-03-23) (in de-DE). Erstellen eines einfach bedienbaren und einfach implementierbaren UI-Konzepts mit Go und htmx. Heilbronn: Hochschule Heilbronn. https://t73f.de/hochschule/thesis/2023_eckert.pdf. 
  18. 18.0 18.1 Tyson, Matthew (2023-09-20). "Intro to HTMX: Dynamic HTML without JavaScript" (in en). https://www.infoworld.com/article/3706951/htmx-dynamic-html-without-the-javascript.html. 
  19. "Introduction to HTMX | refine". 26 October 2023. https://refine.dev/blog/what-is-htmx/. 
  20. Tyson, Matthew (2024-03-13). "Complexity bad: An interview with HTMX creator Carson Gross" (in en). https://www.infoworld.com/article/3713164/complexity-bad-an-interview-with-carson-gross.html. 
  21. "htmx ~ Essays". https://htmx.org/essays/. 
  22. "@htmx_org". https://twitter.com/htmx_org. 
  23. "htmx.org" (in en). 2024-04-17. https://www.npmjs.com/package/htmx.org. 
  24. Tyson, Matthew (2024-04-01). "What's the best JavaScript framework?" (in en). https://www.infoworld.com/article/3713207/whats-the-best-javascript-framework.html. 
  25. Dale, Kyran (2022-12-07). "Chapter 4. Webdev 101". Data Visualization with Python and JavaScript (2nd ed.). Sebastopol, CA: O'Reilly Media. ISBN 9781098111878. 
  26. Letusheva, Valeria (2024-05-09). "Highlights from the Django Developer Survey 2024" (in en). https://www.infoworld.com/article/3715395/highlights-from-the-django-developer-survey-2024.html. 
  27. "htmx ~ Server-Side Examples". https://htmx.org/server-examples/. 

External links