Logo

dev-resources.site

for different kinds of informations.

Summary of the AJAX frameworks comparison

Published at
10/24/2024
Categories
vue
alpinejs
vaadin
htmx
Author
nfrankel
Categories
4 categories in total
vue
open
alpinejs
open
vaadin
open
htmx
open
Author
8 person written this
nfrankel
open
Summary of the AJAX frameworks comparison

In previous weeks, I've analyzed several libraries and frameworks that augment the client with AJAX capabilities.

In this post, I'll compare them across several axes.

Analysis

  • Frontend skills:

    Remember that I started this series from the point of view of a backend developer. In this section, I grade how much you need to know about client technologies to complete the job.

  • Team organization:

    In the introduction, I hinted that the decoupling of frontend and backend teams profoundly impacted projects. Each team is fast on its own, and they can parallelize their work, but integrating the two can double the initial development time. Here, I grade how easy it is to integrate frontend and backend.

  • Ease of setup:

    How easy it is to set up the tool from the backend.

  • Ease of styling:

    Backend developers are not designers by default. Does the tool offer a default, at least average-looking style? How hard is it to create one?

For all intents and purposes, Vue.js and Alpine.js are similar; I'll refer to them as JavaScript frameworks.

JavaScript frameworks HTMX Vaadin
Frontend skills Need the full HTML, JavaScript (it's in the name), and CSS tryptic Only need HTML and CSS, HTMX takes care of the JavaScript burden No frontend skills needed, Vaadin takes care of everything
Team organization Depends on each developer's skills:
  • Either separation between frontend and backend development
  • Or they can develop their use case from the database to the UI
Each developer can develop their use case from the database to the UI
Ease of setup
  • Thanks to WebJars, you can manage dependencies in the POM
  • WebJars Locator allows not specifying the version number in the HTML
  • You still need to reference each library in the HTML page
Everything is in the POM. As Vaadin generates the whole frontend, you don't need additional setup
Ease of styling No default; one needs to use an existing library, e.g., Bootstrap or create their own Vaadin comes bundled with the Lumo theme. Other themes are available in the Vaadin Add-ons Directoryz, such as the Parity Theme. Applying a theme is as easy as setting it as a dependency and adding an annotation. Creating a custom theme is no small potatoes, though. You can ease the task by starting from an existing one and changing it bit by bit. Vaadin, the company, also provides custom themes for a fee.

Time to choose

If you are still unsure how to proceed, here are my recommendations.

If you're working on a regular business app, e.g., forms, choose Vaadin. Business apps are Vaadin's primary use case and will shine there, immensely increasing productivity.

If your app requires good-looking visualization widgets, choose Vaadin as well. For example, its Vaadin Charts component is truly amazing. Note that it's commercially licensed, though.

If you want to offer an API from the start, choose Vue or Alpine. While it's possible to use HTMX or Vaadin, it doesn't make sense in this context. I also emphasize "from the start": everybody plans to offer an API at some point, but most never do. The possible productivity potential you plan to have in the future is not worth the guaranteed productivity in the next months.

The same goes for distributing your app over several channels - from the start (bis repetita placent).

If you're in none of these situations, it's time to go into more detail. Are your developers skilled in frontend technologies? Are they willing to learn to close the gap? Will you need these skills in the near future? These are a couple of questions that can help you decide which way to go.

This post concludes my series on AJAX and SSR. I hope you had as much fun reading it as I did writing it.

The complete source code for this post can be found on GitHub:

GitHub logo ajavageek / compare-frontends

Demo code for the series on AJAX and SSR


Originally published at A Java Geek on October 20th, 2024

htmx Article's
30 articles in total
Favicon
Creating a To-do app with HTMX and Django, part 9: active search
Favicon
Creating a To-do app with HTMX and Django, part 8: inline edit, and using Iconify
Favicon
Creating a To-Do app with HTMX and Django, part 7: infinite scroll
Favicon
Creating a To-Do app with HTMX and Django, part 6: implementing Delete with tests
Favicon
Creating a To-Do app with HTMX and Django, part 5: Testing the views
Favicon
Creating a To-Do app with HTMX and Django, part 4: adding new Todos
Favicon
Creating a To-Do app with HTMX and Django - Part 3: Creating the frontend and adding HTMX
Favicon
Creating a To-Do app with HTMX and Django - Part 1: Creating the Django project with uv
Favicon
Creating a To-Do app with HTMX and Django - Part 2: Adding the Todo model with tests
Favicon
Htmx alpine component
Favicon
Don't Fall Into the CDN Trap! 🪤
Favicon
How to Set Up Authorization in a Bookstore Management System with Go, HTMX, and Permit.io
Favicon
Django project - Part 4 HTMX, TailwindCSS and AlpineJS
Favicon
Implement reCAPTCHA in htmx + expressjs
Favicon
htmx and ExpressJS
Favicon
</> htmx post json
Favicon
</> htmx handle array response
Favicon
Building Simple Real-Time System Monitor using Go, HTMX, and Web Socket
Favicon
🔥HMPL — best alternative to HTMX
Favicon
I've built the TodoMVC app with HTMX and lived to tell the story
Favicon
Summary of the AJAX frameworks comparison
Favicon
A minimalist newsletter signup app with HTMX and Manifest
Favicon
Leveraging Go Tailwind Template (GoTTH) for Efficient Microservices Architecture
Favicon
.
Favicon
</> htmx in 5 minutes
Favicon
Handling form errors in htmx
Favicon
Refactoring RATOM: Day ...604
Favicon
Personal Finance Management App with Django, HTMX, Alpine, Tailwind, and Plaid
Favicon
Augmenting the client with HTMX
Favicon
The GoTTH Stack

Featured ones: