DEV Community

Cover image for React JS Isn’t Actually A Web Framework But Why Are There So Many Others?
cassaden
cassaden

Posted on

React JS Isn’t Actually A Web Framework But Why Are There So Many Others?

There’s a running joke among the developer community that for every tree that’s planted in Australia, a new JavaScript framework is born. Okay, I made that up, but it’s true that there’s a widespread proliferation of JavaScript frameworks, more so than with any other programming language. Stack Overflow’s annual developer surveys for 2021 established that JavaScript frameworks dominated the most wanted and most loved sections in the web development space yet again:

Image description

Nine of the eighteen frameworks cited in that poll are written in JavaScript, representing the fact that 50% of web developers would rather use various JavaScript frameworks than any other programming language. That’s an interesting fact on its own, but it’s a topic for later.

Over the years, we’ve come to take it for granted that JavaScript is the most popular language today. It boasts the widest ecosystem, therefore it makes sense that it has a lot of web frameworks, right? But have you ever stopped to ask yourself why JavaScript has so many different web frameworks in the first place, as opposed to maybe just one or two or at most three that everybody can build camps around and get behind like every other programming language?

Well, today I asked myself that question, and based on what I’ve seen so far, I think the most compelling arguments are the following.

1. JavaScript’s ecosystem of developers have a wider gap in technical backgrounds than other languages.

I think all developers can generally agree that most self-taught programmers fall into the JavaScript/PHP/Python bucket, with JavaScript taking a strong lead. Don’t just take my word for it though. Data driven research¹ that cites the most popular online learning platforms as data sources clearly showed that among self-enrolled programming courses, JavaScript was the highest up the list, followed by Python. That’s because JavaScript is the easiest language to become a full-stack developer with.

Why this is relevant now is that these self-taught programmers have different backgrounds, and thus different preexisting skill-sets and technical know-how. Some come from backgrounds in graphics design, some in pure sciences, and some in economics or business related courses; some are even war veterans². Depending on such technical background, it might be easier to use one framework over the other.

2. JavaScript can run on your back-end, front-end, or both.

This, I think, is the second most compelling reason for why there are multiple JavaScript frameworks. It is a problem that is unique to JavaScript, and no other language can share the weight of this burden.

JavaScript was built for front-end development, but then was eventually extended for back-end development. Some developers are accustomed to using other languages and frameworks for the back-end of an application. Other developers would like to use JavaScript for both front and back-end. And here in is where a major problem lies. It would be difficult to develop an all-encompassing framework that handles both those situations adequately without adding unnecessary bulk and logical complexity to the web application.

3. Most JavaScript developers just call anything that looks fancy a framework when it’s not really a framework.

Yes. This is the biggest reason why JavaScript has so many frameworks: most of them aren’t actually frameworks. A framework in programming is a tool that provides ready-made components or solutions that are customized in order to speed up development. A framework may include a library, but is defined by the principle of inversion of control (IoC)³.

The important thing to understand here is “inversion of control”. A computer library is composed of reusable components that your custom code calls in order to make use of a particular functionality. If you import code you downloaded from a repository and use it in your code, that’s a library. A framework, however, is when your program is structured such that the reusable, imported code within your program is the one that’s responsible for calling your custom code only when it’s needed. The framework controls the flow of the program, not the custom code.

Now given that explanation, it may come as a shock to some that the popular React framework isn’t actually strictly a framework. It leaves too much structural and logical control over the individual program to be really considered one.

What do you guys think about why there are so many JavaScript FrameWorks?


  1. Shuwa, D. (2021). “The Top 100 Free University Courses of the Year (Ranked by Popularity)”. Free Code Camp, 22 Dec. Available at: https://www.freecodecamp.org/news/most-popular-free-online-courses/ (Accessed: 18 Apr 2022).

  2. In 2014, an organization was started to teach war veterans how to reenter regular society as effective software developers: https://vetswhocode.io/.

  3. Ranjan, R. (2021). “What is a Framework in Programming & Why You Should Use One”. Insights about Product Development, 7 Oct. Available at: https://www.netsolutions.com/insights/what-is-a-framework-in-programming/#:~:text=A%20framework%20in%20programming%20is,inversion%20of%20control%20(IoC). (Accessed: 18 Apr 2022).


P.S. Please subscribe to my blog for more detailed, thought provoking content: https://cassaden.com/blogs/curated

Discussion (1)

Collapse
naveennamani profile image
naveennamani

Even the official website of reactjs says

A JavaScript library for building user interfaces

Your first point speaks the point, yes even I learnt JavaScript first and then python.
But what I feel the reason for a wider technical gap is the fact that JavaScript doesn't have a standard library like python, so every little thing that we can do has been made as a package.
Things like is-even package still hits 180k weekly downloads. Whereas widely used machine learning libraries in python has <30 dependencies. This lack of standard library makes everyone to reinvent the wheel without knowing that someone already build a vehicle on that wheel. I feel like denojs approach is a good point towards avoiding this mess with nodejs.