JavaScript Frameworks

So I'm not sure I've really discussed frameworks, specifically my views on them (at least not here), but now's as good a time as ever. When it comes to the back end side of development, at least with PHP, I prefer not to. Of course, this would be different when using something like Python or Ruby that aren't meant to run on the web like PHP does, when it offers neat things that make development significantly easier. But I also like control, full control. So typically, I won't use them unless I absolutely have to. I want my code to have as few assumptions as possible and be as efficient as possible. So sure, Python and Ruby frameworks provide you with neat concepts like templating engines, but PHP doesn't need it. I've actually discussed this in detail before with a breakdown of back-end languages, which you can find here.

The Legacy of jQuery

But when it comes to JavaScript, I'm all too willing to grab one. This is probably due to how I learned. With PHP at the time, there was no "master" framework, at least not one that was insanely popular at the time. So I just focused on stretching PHP as far as I could. But while I was learning Javascript, there was this 800 lb gorilla named jQuery. If you were doing JavaScript a few years ago, you should damn sure be using jQuery, or at least know how to. So for the most part, I learned jQuery while I learned JavaScript. Now, jQuery isn't a framework, it's more of a library. But there are 3 big names in the JavaScript world right now that are used to build some amazing web applications.But in recent years, jQuery has started to decline in popularity. It's far from dead, but the whole purpose of jQuery was to make things like DOM traversal easier. But with more recent versions of JavaScript, much of what it offers just isn't needed anymore. Still, there are tons of legacy applications and websites using jQuery, so it's still a good thing to at least familiarize yourself with if you want to be a developer, though I'd recommend learning just pure Vanilla JavaScript first.

Angular JS

This is probably the most well-known one out there, at least of the three. It's been around for awhile, more than 8 years as of this blog, and it's developed AND maintained by one of the largest names in the tech world: Google. Angular covers an insane amount of functionality, especially a popular feature such as two-way data binding. I won't go into too much detail as to what it is, but I'll give you a brief example. If you've ever been to a site where you're typing something into a text box, and what you're typing is also being displayed and updated real-time somewhere else (like changing the site name in a WordPress site), that's two-way data binding. Angular does way more than just this, but I don't want to get too far into all of the fine details. But for all it offers, there's one downside to Angular, and that is the size. Of the three we're going to discuss here, Angular is far and away the largest. This isn't to say that it shouldn't be used, as it is a great tool for developers. But I would recommend against it for smaller, more simple applications. Unless of course you know Angular inside and out, and you're not fond of learning a whole new framework just to build a single application.Currently, Angular is on version 7, which is actually version 1.7, (1.7.2, to be more specific) which is the latest stable release of the framework. If you don't know what those version numbers mean, check out this other post we wrote a few days ago that gives you a break down of how to read and understand version numbers.

Vue JS

So Vue JS is another insanely popular front-end framework, and it's the perfect one to discuss after Angular. See, Vue JS isn't backed by a huge company like Angular has with Google. But in a way, it also kind of does. See, there's this developer named Evan You who worked for Google and used Angular on a number of projects. He liked what it did, but found that it could be cumbersome for smaller applications. So one day, he decided to take the important parts of Angular he really liked, and rework a few things to make a MUCH more lightweight front-end framework. So while still offering features like two-way data binding, it rids itself of some of the lesser used features.But as you would expect from open source software, you'll still be able to get some of these features through things called "plugins", which is very similar, at least in concept, to the way jQuery was used. In fact, I've even ready on forums before where Vue was basically called the next jQuery, though for very different purposes. But it's because of the flexibility that Vue offers that we here at Red Shark Digital have actually started to use Vue JS in some of our upcoming web projects, so be sure to keep an eye out for that. Vue JS is only 4 years old, so it's only been around about half as long as Angular and is currently on version 2.5.16 as of this post.

React JS

So if Angular is the largest with the most features, Vue is the smallest with the fewest features, React falls somewhere in between the two. React, like Angular, is also backed by another huge name in the tech industry, Facebook. It's extremely popular for single page applications, and even has a neat thing called "React Native" that lets you build cross-platform applications in javascript (and html/css) and compile them into desktop and even mobile applications. So imagine building a really cool front-end web application, and easily porting it to iOS, Android, and Windows/Linux/MacOS with little extra effort. Now, this is something you could also accomplish with Angular or Vue, but it seems that React really shines in this aspect. It's no doubt mostly due to its powerful JSX feature that lets you build web components with JavaScript that can be added to the page in a much more developer-friendly way. And like Vue, there's a couple of projects that are coming up, albeit a little further down the line, that will be using React/Native to build the web application as well as Desktop and mobile versions.React has been around a little longer than Vue, around 5 years, but still not quite as long as Angular. It also wasn't released under the popular "MIT" license that the other two are under until the tail end of summer 2017, so some people may still be a little hesitant to use it. But I don't personally see an issue with it. As of today, React is sitting on version 16.4.1, and definitely isn't going anywhere anytime soon.

So which one should you use?

Honestly, don't overthink it. If you want something basic and easy to learn, go with Vue. It'll get you up and running quickly. If you have a much larger project and you want more power, go for Angular. Want to do a little of everything, go with React. Or don't. All that matters is that you enjoy what you do and don't want to rip your hair out at the end of the day.