As a frontend developer, I primarily use JavaScript. It's the language I know best, although I've dabbled in others. Anybody who spends enough time hanging around The Orange Site will hear the same two tropes about JavaScript repeated over and over again.
- JavaScript frameworks (especially React) are bad, because they are too heavy. Just build HTML sites with a little JS for interactivity!
- The JavaScript ecosystem is bad because there is a new framework every week!
I can't argue that React isn't heavy, because it definitely is. When building smaller personal projects, I challenge myself to avoid using a framework, and this is totally fine for a project that I plan on finishing in a weekend. I can be virtually guaranteed that my dependency-free vanilla JS™
will run just fine without maintenance until the internet stops being built out of HTML and JavaScript.
I do take umbrage with the second point. There have essentially only been 3 actual players for several years: React, Angular, Vue. Ember is also used professionally, but less so.
Part of why this issue is so muddy is because of the two kinds of a front-end developer. The internet used to be made out of documents, and some of those documents had a little interactivity. This is the first type of developer, a person who has never had a problem just listening for a click on a DOM element and calling a function. These are usually the loudest voices against frameworks.
What these voices often fail to recognize is that their sites involve updating the DOM in a handful of places, and this is a fundamentally different thing than a full-featured SPA with lots of routes. They don't need to reuse logic in different parts of the app the way React encourages. Yeah, man. I wouldn't use React just to put an image carousel on a webpage either.
Any effort to create a complex single-page application without a framework is likely either going to be messy as hell or result in a unique framework. And that unique framework might be something you are proud of and decide to show the world, and there's trope #2 staring you right in the face.
This is without even taking into account the other benefits that come from learning a popular framework. Startup jobs (with startup money) are plentiful and most of them use popular technologies. That's part of the fun of working at a startup. If you want to break into that sector, your chances are greatly improved by knowing a modern framework, especially React. When I took my current job, onboarding was significantly shorter because they were using the same tooling that we used at my previous job. It's better for the company, but it's also better for me. I get to make more money and have an easier time at work. Cool.
So how does one navigate the quagmire of "a new framework every week"? The big three took center stage because their approaches were radically different than the old jQuery way. You should know enough about their differences to be able to talk intelligently about them (which is where a lot of projects that "don't need a framework" come from, but that's another post). When a new framework comes along, you'll be able to tell right away, does this represent a new paradigm or is it just more of the same? If it seems different enough to mess around with, mess around with it if you have time. If it does end up becoming the next big thing, you're an early adopter, and if not, there may be ideas or patterns that improve the code you write every day.