3 ms·
Hi, creator of Alpine here. Alpine comes out of the server-rendered-app (Laravel/Rails/Django) and static site context. It's important to recognize that. To m
by calebporzio 7y ago
Hi, creator of Alpine here.
Alpine comes out of the server-rendered-app (Laravel/Rails/Django) and static site context. It's important to recognize that.
To me, Alpine fills a hole in between vanilla JS (or jQuery) and large v-dom frameworks like Vue/React.
I personally think the complexity/overhead of Vue/React/Etc. doesn't justify its value in a lot of cases for me. Often, I'm adding simple interactions to server-rendered pages. Things like dropdowns, modals, dynamic inputs, other reactive doo-dads...
By using something like Alpine, I get to keep the data-driven reactivity and declarative template expressions of VueJs, but without all the overhead. (and without a virtual-dom)
I thought Stimulus would be the framework for me, but I personally felt I was doing too many manual DOM-manipulations and my code felt more imperative than I like.
In my opinion, Alpine is unique in these ways:
- You can use it without maintaining a separate JS file or <script> tag (although you can easily break code out into separate files and such if you need to)
- It doesn't use a virtual-dom at all and uses MutationObserver to react to DOM manipulations from outside JS (something like Turbolinks, third-party libs, or your own hand-written JS). This makes it very resilient. It won't crumble if you touch the real DOM.
- It's lightweight. It's under 5kb g-zipped.
- It has a really nice API for listening for and dispatching native browser Event/CustomEvents rather than using its own event system. This makes it a really powerful tool for interacting with third-party libs.
It's not a tool for everyone. It's not a Vue or React killer. (although it might be a Stimulus killer lol)
If it speaks to you, great. You and I are similar.
If not, understandable too. Different tools for different contexts.
Thanks everyone for chiming in!
- mstade 7y agoHey! Cool project, thanks for sharing it with the world! If I may offer a suggestion, you should perhaps expand on the rationale in the readme to include some of what you say in this comment. I personally find this to be a very interesting library for rapid prototyping, so if you're looking for use cases that's another one for you.
- aabbcc1241 7y agoThe benefits sounds, would it work with Typescript?