DEV Community

Ben Halpern
Ben Halpern

Posted on

Which JavaScript frameworks are worth learning in 2021?

I am sure there are no right answers on the topic of JavaScript frameworks, but maybe this discussion will still prove useful if anyone wants to weigh in. Don't worry too much about the distinction of "framework" vs "library".

Feel free to vouch for the popular ones, or offer a lesser-known answer.

Top comments (110)

Collapse
 
katieadamsdev profile image
Katie Adams

Where my Vue devs at? All frameworks have their merit honestly; I'd say think about what core skills you really want to hone and pick a framework that will aid/reinforce those values. Personally, the lack of barrier to entry with Vue was a massive plus for me and to this day I'm yet to find something it can't do for me. I also think it'll give me a good basis to learn Angular at some point in the future. React is quite heavy on the JSX which, if you're not a fan of, might be a reason to give it a miss. However, it's very popular and common among lots of big companies, where there will be lots of good guidance and teamwork to support learning. Gatsby is one I want to learn desperately as GraphQL is something I'm keen on understanding and a framework that goes hand-in-hand with it seems like an opportunity. Smaller frameworks? I'm intrigued by EmberJS a lot. 🤔 There really is no right answer; framework choice is incredibly personal and will likely depend on the type of project you're wanting to work on. :3

Collapse
 
maureento8888 profile image
Maureen T'O • Edited

Vue dev here! I agree with the low entry barrier of Vue. I love Vue because of its separation of concerns with the HTML, CSS, and JS. I found React a little "artificial" in its JSX but would be worthwhile to learn at some point. I haven't yet found a pain point for Vue.js yet and find it just what they say, "incrementally adoptable" 💚

Collapse
 
katieadamsdev profile image
Katie Adams

Completely agree with what you've said here! Especially the point about separation of concerns. 😁

Thread Thread
 
terpinmd profile image
terpinmd

Just pointing out that react is a UI library so jsx along side of javascript is fine. You can have services or hooks that don't have JSX in them.

Thread Thread
 
katieadamsdev profile image
Katie Adams

JSX just might be a shock to the system, for those who've not encountered it before, that's all I meant. Never was against JSX as a concept :)

Thread Thread
 
xowap profile image
Rémy 🤖

Not a shock at all, I was quite used to JSX for a long time before its release and that's why I hate it. Anyone heard of PHP?

Collapse
 
arvindsridharan profile image
arvindsridharan

Thanks for your opinion about Vue. Currently I am solidifying my JavaScript basics. Will try Vue after a month.

Thread Thread
 
katieadamsdev profile image
Katie Adams

Hey, that sounds great! Definitely get that core JavaScript knowledge down first. That'll serve you well no matter the framework. Good luck and have fun!

Thread Thread
 
arvindsridharan profile image
arvindsridharan

Thanks

Collapse
 
nicozerpa profile image
Nico Zerpa (he/him)

Vue.js has a fantastic pro, and it's that you can add it to legacy projects with a simple <script> tag. That's how I used it for the first time.

Collapse
 
katieadamsdev profile image
Katie Adams

This is really good point, you're so right!

Collapse
 
parsepec profile image
Parsepec

Try gridsome its like gatsby but for vue, it also uses graphql

Collapse
 
katieadamsdev profile image
Katie Adams

This is a great tip, thank you. I'll check it out :)

Collapse
 
danroc profile image
Daniel da Rocha

Vue Dev here. Just love it, especially the community around it and the sense that it is a community-led project from the ground up. I do wish there were more articles/libraries/projects focusing on it though. I often check out some exciting projects and then see they are only for React devs. React's popularity makes it a good framework to learn as well, with lots of job offers out there, but also much more competition.

But in the end, if you know one framework well and understand the language and how to build well-structured apps, you can easily transfer your knowledge to other frameworks. Just go with what gives you pleasure as a dev!

Collapse
 
katieadamsdev profile image
Katie Adams

Couldn't have said it better myself!

Collapse
 
itachiuchiha profile image
Itachi Uchiha

I'm using Vue for 3 years. I am a little bit bored. Because there aren't enough Vue libraries. I found my needs for React. But I'm still using it. There is a lot of projects I've made with it.

Collapse
 
katieadamsdev profile image
Katie Adams

That's completely reasonable. Vue is very much in its infancy to React and there's A LOT of documentation, support, and community for the latter. :)

Thread Thread
 
itachiuchiha profile image
Itachi Uchiha

Yep but still has a huge community :)

Collapse
 
bertmeeuws profile image
Bert Meeuws

I have a pretty decent understanding of react and learning vue 3 atm.
You should really learn react and try out Gatsby. The plugins for gatsby are insane, take off so much of the heavy lifting.

Collapse
 
katieadamsdev profile image
Katie Adams

I've done a little React, and a lot of React Native. I'm v excited for Gatsby and the plugins you speak of sound awesome!

Collapse
 
sandordargo profile image
Sandor Dargo

VanillaJS :D

Collapse
 
somedood profile image
Basti Ortiz

Ah, I see. A man of culture! 🥂

Collapse
 
kigiri profile image
Clément

still the best framework

Collapse
 
rishitkhandelwal profile image
Rishit Khandelwal

Agreed.

Collapse
 
jmau111 profile image
jmau111⚡⚡⚡

Not a framework in the typical sense as it's a compiler, but Svelte is nice. The generated vanilla js bundle can be used to create specific modules or you can create entire website and app with it.

I'd keep an eye on Plenti (built upon Svelte) but it's still pretty young.

Other frameworks are great, but it's a lot of bytes to load. I'm still a big fan of gatsby, even React itself but only for "Rich apps" with many potential interactions.

Preact helps a lot.

Collapse
 
paulasantamaria profile image
Paula Santamaría

I've been experimenting with Svelte and I love it so far!

Collapse
 
alanmbarr profile image
Alan Barr

Svelte is pretty nice. There are some raw parts I'd love to see some attention to but much less overhead than a lot of the virtual dom frameworks.

Collapse
 
souksyp profile image
Souk Syp.

Niiice Svelte is a love at first sight!

Collapse
 
jonrandy profile image
Jon Randy 🎖️

You should check out RiotJS - it clearly inspired Svelte, and has been around a lot longer

Collapse
 
madza profile image
Madza

I really like the approach of Svelte.
It brings us back to basics like the 2000s (HTML, CSS, and JS), while still using the best bits of the modern world like reactivity, components, etc. All the magic happens behind the hood (as it is a compiler). It's easy to pick up, concise, fast, and well documented.

Is it worth learning?
I would say it depends on personal workflow and job market priorities.
For personal projects or for clients that don't have a particular stack in mind for their product, I would say it is def worth playing around with.
Unfortunately, the job listings for Svelte are still pretty rare. So for those looking to work for larger companies and increase their chances of getting hired, I would say React is still a standard pretty much and would probably be a safer bet.

Collapse
 
ninofiliu profile image
Nino Filiu

How come nobody mentionned state of JS 2020's survey on frameworks? It does an excellent job at measuring the satisfaction, interest, usage and awareness across a huge number of respondants

survey

Collapse
 
lesha profile image
lesha 🟨⬛️

It gives the most obvious and boring answer to the question though. in 2020 you have 9 frameworks and 6 of them are well established ones. I personally would love to find something new, something that's under the radar still.

Collapse
 
bobbyiliev profile image
Bobby Iliev

As a Laravel dev, I would vote for Alpine.js!

Collapse
 
ky1e_s profile image
Kyle Stephens
Collapse
 
bobbyiliev profile image
Bobby Iliev

This is hilarious 😂

Collapse
 
simonini profile image
Alessandro

As a Rails Developer, I vote also for Alpine.js;
I found it very easy to integrate (with CDN and without Webpacker!).
Is also super easy to use.
For the more complex scenario, I also use vue (but remain that I hate webpacker setup XD).

Collapse
 
endymion1818 profile image
Ben Read

Does Laravel start with Alpine then? It was Vue last time I checked.

Collapse
 
bobbyiliev profile image
Bobby Iliev

You can choose based on your personal preferences.

I am a fan of the TALL stack: TailwindCSS Alpine Laravel and Livewire

Thread Thread
 
javier123454321 profile image
Javier Gonzalez

The TALL stack is the Get Stuff Done stack. Amazing for solo devs!

Thread Thread
 
bobbyiliev profile image
Bobby Iliev

Absolutely! 🚀

I could have not said this better!

Collapse
 
patricknelson profile image
Patrick Nelson

New to me... but seems intuitive after a quick look.

Collapse
 
iainfreestone profile image
Iain Freestone

I am very much still in React land and use Next.js for most projects. But am looking into both Blitzjs and RedwoodJS for my next project, both look very interesting and seem more much more opinionated.

Collapse
 
amorriscode profile image
Anthony M.

Really enjoy using Redwood for my projects. They just released prerendering too!

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt

Not sure what are the approaches into reducing interfaces between

  • Frontend and backend
  • HTML and JS (and CSS)

Perhaps this is one of them.

Collapse
 
maureento8888 profile image
Maureen T'O

Even though I took up Vue.js for its highly-recommended ease-of-learning for beginners, I'm beginning to see why Vue developers love Vue so much. It's clear where the HTML, CSS, and JS is and I personally find this a LOT less overhead than React.js with the JSX. I think another factor that pushes Vue to the top for me (other than Vue being incrementally adoptable!) is that its entire package is very small, especially after its v3 update (half the size of v2) and doesn't have a ton of overhead. But, overall, I don't hate on any frameworks (I don't want to, it makes me sad and contributes to nothing constructive) and think whatever works best for a given situation will do!

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt

I am looking at Stencil.js.

  • Web components, relying on shadow DOM, that is, separation of CSS.
  • CSS preprocessors are allowed.
  • JSX/TSX, resulting in full power of TypeScript.

I would say that JSX + TypeScript makes HTML strongly-typed, where you would normally lose typings at languages' interface; like between backend and frontend, and between JS and HTML.

Collapse
 
rhymes profile image
rhymes

Yesterday I was literally reading up about the differences between Turbo, StimulusReflex, htmx and others :D

Collapse
 
tunaxor profile image
Angel Daniel Munoz Gonzalez

Stencil ain't bad either if you fancy tsx I really like the way you can create design systems with it plus you can opt in to shadow DOM or just ignore it for the moment until you are ready for it

Collapse
 
buphmin profile image
buphmin

As primarily a backend developer I would be happy to recommend NestJS w/ fastify adapter. My team and I spent a bunch of time researching which framework gave us tools to implement business logic without too much bloat. We looked at minimalist ones like express/koa to full stack like sailsjs. We found NestJS to be a happy path for us in terms of features without being overbearing. Our internal tests found NestJS using the fastify adapter to be about 3.5x faster than express which was a nice bonus.

As far as front end, I would be happy to recommend Vue or back to basics VanillaJS. Vue is great for building all kinds of apps and my brain finds it much much easier to use than React for data driven applications which is all work on. And honestly I think it is important to know how the browser works so no framework is good to know.

Collapse
 
yagmurmutluer9 profile image
Yağmur

If it is their first framework, I suggest Vue. I'm a newbie too. I learned Vanilla JS around three months and now I'm easily adapted with Vue. But I'm looking with "learning" perspective.. if it's a project, job or different background etc it depends.

Collapse
 
etienneburdet profile image
Etienne Burdet

Svelte is hardly a bad choice. People—me included—are happy with it, it's a significant step in terms of performances, it's easy to learn.

Not a framework, but I really want to dig into lit-element. It feels so light.

And of course, Hotwire 😎⚡️

Collapse
 
javier123454321 profile image
Javier Gonzalez

Vue is great for large projects, but I have been trying the TALL stack (Tailwind, Alpine, Laravel, Livewire) for a pet project that I am building on the side by myself and Alpine is amazing for small projects like that. Actually the TALL stack is awesome for solo devs looking to make a full stack browser based app quickly and robustly.

I have used Alpine also for landing page type projects and, to me, it's for ES6 what JQuery was for JS before ES6. It feels like a full on framework when you are using it for simple things. It fails at scaling and creating components, which is why it is a great pair with livewire, so I wouldn't use it for large systems. However, I definitely recommend checking it out if you haven't.

Collapse
 
simonini profile image
Alessandro • Edited

I'm used to BAR 🍻 (bootstrap, alpine, rails)
Very fast for solo dev prototyping.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.