Over the last few years, front-end developers have been completely bombarded with front-end frameworks and libraries until the cream of the crop surfaced. While there are way more than just these three of these we’re only going to go over the big 3: Angular, React, and Vue. I find that these have the largest user bases and are the most support. Before we get into the thick of things I wanted to make a distinction between a framework and library. I feel as though these things get used so interchangeably that we forget that there is a big difference.

Framework vs Library

I think the largest difference between a library and a framework is that with a library you have the most control and call the library as needed. On the flip side, with a framework, you plug your code into it and the framework will call your code. Generally speaking, frameworks provide greater structure to your code while libraries provide greater freedom.

Now that we have a brief overview of the difference between a framework and library, let’s go over each of the big 3 individually.

Angular

As far as frameworks go, Angular has one of the best environment of tools. Angular has a vibrant developer environment with every tool under the sun to help speed up your development. I think the best tool in the Angular arsenal is the Angular CLI. The CLI really separates Angular from the pack because it makes going from zero to app a breeze. It takes care of about 90% of the boilerplate code and setup. When you use it to generate components and services it will create the components, wire them up, and as a cherry on top it will also create tests for all these things. When using Angular you will notice that you will rarely have to hook up anything manually.

Angular is different from the other three because it uses TypeScript rather than JavaScript. While the other ones have TypeScript integrations, they mainly utilize JavaScript. TypeScript is an Object-Oriented and strongly typed (ish) superset of JavaScript that transpiles into plain JavaScript. With that in mind, Angular utilized OOP principles like classes, interfaces, encapsulation, inheritance, and has a dependency injection system. If you’re already used to programming languages like C# or Java then it will be a lot easier for you to use. However, if you’re not, then it can have a decent learning curve.

Angular is also bundled with RXJS which is a library for asynchronous programming. This is both a pro and a con because, while RXJS makes asynchronous programming much easier, it has a steep learning curve and can take some time to wrap your head around. However, once you get it you get it and it really does make asynchronous programming a lot easier.

Lastly, Angular is very opinionated on how an application is supposed to be built and how the components are to be used. This means that there is a right and wrong way to do things in Angular, or an Angular way to do things. If you can work within these rules you can make very large and complex apps quickly and in a way that is easily maintainable.

With all of these things in mind, let’s have a quick recap.