This article has been republished from flippedcoding.com

JavaScript frameworks are incredibly hot right now. You've probably heard of the most popular two: Angular and React. They can really help speed up the development process and they do a good job of separating responsibilities in the code. So why shouldn't you focus on them if they're so great?

It's not that you shouldn't learn them. You should just spend more time making sure you are proficient in HTML, CSS, and JavaScript/TypeScript. When you know these foundational web development languages, then you can use the true power of the frameworks.

The problem is that many people start learning web development within a framework and when you take them out of the one they know, it's really hard for them to shift gears. That's mainly because what they know about HTML, CSS, and JavaScript/TypeScript comes from the context of the framework. When you can use the main web development languages alone, you can jump into any framework and start figuring out how to work with them.

For example, Angular works with components and each component can have its own HTML, CSS, and TypeScript files. What most people overlook in the beginning is that you still have to know how to write the code for those files even if they come pre-loaded from a template.

Again, that's not to say that you shouldn't learn the JavaScript frameworks. That just shouldn't be your main focus until you feel like you know the base languages well enough to write a web app from scratch. You'll find out in some cases it might be easier to write the whole thing from scratch after you deal with the updates to the different frameworks.

Which brings us to another point. JavaScript frameworks can have updates that make everything you know about them irrelevant. Angular has changed so drastically over the past few years that Angular 1.x has close to nothing in common with Angular 6.

But the two versions do have some things in common and I bet you can guess what they are: HTML, CSS, and JavaScript/TypeScript. So spend some time learning how the frameworks work so that you can use them, but make sure you understand the guts behind them first.

Not only will it help you write more efficient code, you'll be able to jump into any JavaScript framework and start making meaningful changes. The hype behind the different frameworks is definitely deserved because they can be great, but like everything else in web development they come and go and have major releases.

What's been your experience with JavaScript frameworks? I've worked mainly with Angular and I want to throw my computer out the window love it. Anybody using React or any of the others?

<hr>

If you're trying to learn more about JavaScript, you're in luck. I have tutorial and it's just for JavaScript. There have been 103 downloads in the past week so I think it's pretty good. Go learn something new today and go get it. Click here to get the tutorial

Write your comment…

Interesting outlook, mirrors some of my thoughts on the subject, other parts not so much.

I've come at frameworks with a negative viewpoint simply because on the front end, I have found them to universally be rubbish. The reason I find them to be rubbish is their ignoring good practices, ignoring the HTML/CSS specifications, ignoring why HTML and CSS are separate from each-other, and in general feeling like they were written by people who never learned enough about HTML or CSS to be telling others how to build websites.

... and in some ways that's exactly the problem you highlighted when you said:

The problem is that many people start learning web development within a framework and when you take them out of the one they know, it's really hard for them to shift gears

As the problem runs deeper than that. They never learn enough of the languages underneath to even form a valid opinion on if the framework is actually easier, better, or even if the result is something you should consider deploying!

The back-end frameworks are a little better in this regard, but so much of what they do is bloated, slow, and the antithesis of anything I would consider to be good practice in web development. So much of it violates accessibility norms, uses JavaScript client-side for things that are none of JavaScript's business, and on the whole make people work harder, not smarter.

That's why so many of the examples and comparisons end up 'card stacked' like cut-rate propaganda and why -- to me at least -- the 'cultures' that develop around these frameworks have more in common with Jonestown than they do any sort of business or engineering environment. The outright cultism of them uses all the propaganda techniques to promote outright lies about what they do, what they are, and what they are good for.

Particularly given how quickly any real dissent in their "communities" gets stamped out with an iron fist.

not to say that you shouldn't learn the JavaScript frameworks

Which is where a lot of my negative attitude towards them comes from. I had to learn enough about them to figure out what they were doing, what they were doing wrong, and fix it for clients who some other developer saddled up, took for a ride, then ran for the hills never to be seen again once they got paid.

Hence:

What's been your experience with JavaScript frameworks?

... my experience -- particularly the past 5 years -- has been ripping them out of websites and applications where what they do was negatively impacting accessibility, creating slowdowns, making sites harder to maintain, expand, or scale, and in general stamping them out of existence for clients who are even more sick of seeing them than I am.

It's part of why I often use words like "scam" or "con" in relation to frameworks, as in my experience that's really all they are. They dupe people into thinking that it's easy, thinking that it's good, and when things go wrong thanks to cognitive dissonance of that initial impression it isn't until things go completely bits-up face-down that they're even willing to consider that maybe, just maybe the framework was at fault.

It's somewhat akin to Apple owners, and how they'll believe it whenever Apple says you're using it wrong. Oh, it's not a laptop, it's a macbook, you're not supposed to actually use it on your lap. Oh it's a macbook pro, you shouldn't be using the i9 version to edit videos, one of the top tasks people wanted a i9 macBook to do.

Because people are told these things are "easier" they believe it, even when they lack the experience, knowledge, or exposure to different things to form a rational opinion on the topic... and once people truly believe something, it's nigh impossible to convince them the opposite is true.

It's why -- to quote Rufus, the 13th apostle -- I prefer to have ideas. Changing a belief is hard, it's easy to change an idea. Hence if you show me something built with one of these frameworks that isn't a overly complex hot wet sticky mess with accessibility issues galore, I'll change my mind.

Until then all this talk of how "easy" they are, and how much "faster' they let you develop? and how they "help" with collaboration? No... I've seen zero real world evidence to back up those claims compared to just writing the code normally if you bother learning the underlying language first.

Though to be fair, so much of what people do with these frameworks are things I would advise clients never to do in the first place!

Hashnode is a friendly and inclusive dev community.
Come jump on the bandwagon!

  • 💬 Ask programming questions without being judged

  • 🧠 Stay in the loop and grow your knowledge

  • 🍕 More than 500K developers share programming wisdom here

  • ❤️ Support the growing dev community!

Create my profile