Ask HN: Web frameworks – which less popular frameworks are you using and why?
Many popular programming languages today have one or two web frameworks that dominate usage in that language over other web frameworks for the same language.
- Python: Django, Flask
- Ruby: Ruby on Rails (RoR)
- PHP: Laravel
- JavaScript: ReactJS
I think it's nice to hear are about lesser-known web frameworks not often in the spotlight. If you are using a lesser-known or less popular web framework, what made you choose the framework? What do you like (or dislike) about the web framework you use?
147 comments
[ 3.5 ms ] story [ 225 ms ] threadI think this framework grew out of the initial development team's needs for a fast, lightweight Java framework. (I wasn't there, not sure how much looking around they did, but this was years and years ago.) It's now foundational for our applications.
We've had some folks at the Boulder Ruby meetup present on Hanami, which appears to have better separation of concerns and testability as well as less magic than ruby on rails. Hard to compete with the ecosystem, though.
1) Clojure is a superpower
2) Interceptor-based approach (think: dynamic middlewares) works really well and it’s flexible.
Clojure has no “frameworks”, but Pedestal has all the batteries I need included.
This was the very first framework I learned when I first learned PHP, and it has always just been so incredibly _easy_ to accomplish most common MVC tasks that I've stuck with it. I've become quite the expert in the framework over the years, even managing to make it bend quirky ways that it was not meant to in service of business goals. That has made me an extremely valuable resource for companies using the framework, and so I keep using it. Plus, I enjoy it immensely.
What browser are you having problems with in reader mode?
PHP: Slim Framework
I like Warp because it's akin to a layer on top of Hyper (for HTTP) and Tokio (for async), and can go down into these deeper layers as you wish.
I'm using Warp now because I'm trying all the Rust web frameworks. I like Rust Actix for larger production projects that favor a more-long-term ecosystem. I like Rust Rocket for its user-friendly ideas and superb tutorials for onboarding.
Zola is a single-executable static web-framework like Jekyll.
I used to think my distaste for new and upcoming Javascript frameworks is a sign of getting old and not being as adaptable as I used to. But nowadays my thinking has shifted to seeing it as a instant loss of productivity with little upside.
Just like musicians don't switch instruments every time they see something shiny. Neither should we, or at least without feeling guilty about it. Mastery takes time.
Django Ninja brings some of the nice features of FastAPI to Django- https://django-ninja.rest-framework.com/
Backend app boiler plate [dependencies] already setup for anyone wanting to build backends in kotlin
git clone https://gitlab.com/asad-awadia/kotlin-server-app.git
[0] https://github.com/rabbibotton/clog
On the back end, for small projects, using a full-fledged framework is usually overkill. Writing a simple API that reads and write normalized data is quite trivial, and when one is writing everything it's easier to understand what's going on.
By this I mean that some behaviors come from the framework and can sometimes surprise you. For example, in Backbone, change events on the model are triggered not when an instance is updated, but only if the new version is different from the old. This makes sense, but the problem is that the comparison is only done on a shallow level. When updating deep properties, no change event is triggered. This took me some time to figure out.
Light frameworks have fewer unexpected behaviors, by virtue of being small.
Edit: dates
Still, I’d recommend it for small projects where you need binding.
[1] https://github.com/sebastianconcept/Mapless [2] https://github.com/sebastianconcept/lobster-ui
If you have used a good batteries included MVC like Django before, you’ll feel at home. I made a production ready app in a few weeks with it and Prisma as ORM, that’s been the base of our startup and served us wonderfully. Can’t recommend it enough, as it is really powerful and is very extensible and as obvious by the number of plugins and examples available.
Since you mentioned NestJS, I just wanted to quickly plug a comprehensive tutorial that we've published today that explains how build a REST API with NestJS, Prisma, Swagger and PostgreSQL. I think it gives a really nice overview of the main workflows and best practices when using these tools together!
You can find it here: https://www.prisma.io/blog/nestjs-prisma-rest-api-7D056s1BmO...
I like it because it just gets out of my way. I get declarative DOM updates like in React, but without any heavy-handed idioms, behavior that's tricky to understand, or subtle footguns.
It feels more like using a library than integrating with a framework. Most of my code is just boring variables and function calls, as if I have a simple declarative layer between me and the DOM but I'm otherwise writing vanilla JS/TS.
Using it for some personal projects with Vite and it is a breath of fresh air. I use React for work during the day, but coding in Svelte just brings me joy.
Do you use something t like Redux with Svelte or is the approach different?
https://svelte.dev/tutorial/custom-stores
In fact, their API is so similar to Redux and RXJS that I think you might not even need to write any glue-code.
https://redux.js.org/api/store/#subscribelistener https://rxjs.dev/guide/observable#subscribing-to-observables
[1] http://bottlepy.org/docs/dev/
Fun fact: Flask was born as an April Fool's joke parodying Bottle. (source: https://en.wikipedia.org/wiki/Flask_%28web_framework%29#cite...)
Arguably the first JS equivalent of web development frameworks such as Laravel/Rails
The author has fake accounts pretending to be a happy user to promote the framework. That stuff really puts me off, even if the framework might be awesome technically speaking. If you don't believe search for "andycharles" here, on reddit, twitter, etc. An account created everywhere on or after the framework was released, whose only information on the entire internet is about how great adonis is.
If you want something that scales out horizontally akka-http + an distributed akka stack (cluster, sharding, etc) works beautifully. Especially pairing it with websockets/grpc streaming, you can end-to-end stream pretty effortlessly.
Now on version 6, it's fast, well maintained, mature, and has good docs with readable code.
@bdarnell has done an excellent job maintaining it.
Here's one example:
Tornado supported async style coroutines before asyncio was a thing. Now it uses asyncio under the hood by default -- and it did so with an exceptionally smooth transition.
Why: No JS build toolchain hell, tight control over dependencies (you know because software supply chain), blazing speed, really nice live editing of go templates without server restarts, fully supportive of the browser's back/forward cache, and a single binary to deploy (plus the templates, CSS, etc.). Simpler DevOpsLife!