Technology

Javascript Framework Comparison: Vue.js vs Angular

It’s that time again: Javascript framework comparison time! This time we’re taking the aging champion Angular against the svelte and fast Vue.js. Two frameworks enter, one framework leaves.

It’s Vue. Vue is the better one. We both knew that. Every JavaScript framework comparison knows that. C’mon, it’s 2020.

Carrying on. 

Vue

Vue isn’t the plucky newcomer any more: it’s been around long enough in JS terms that it as—at least—a plucky journeyman. Compared with other competing JS frameworks it has a tiny file size and is extremely easy to grok (especially with that excellent documentation), but it still hasn’t managed to pick up a lot of steam with the community; everybody wants to be working in Vue, but it’s not happening yet. There also aren’t a great breadth of resources outside of the official docs. It’s caught in a bit of a vicious cycle: nobody is really using Vue, which means nobody is really using Vue.

Which is a shame, because it is so good. It has vastly superior runtime performance in most cases while being easier and faster to write.

Also, 2019 was a bit of a bumpy year. It was the end of developers’ honeymoon with the framework; a June RFC caused huge community backlash that—among other problems—previously-written code was going to be deprecated. Those concerns turned out to be overblown, but they definitely slowed Vue’s meteoric rise. I don’t think 2020 is going to be Vue’s year, but 2021? I could definitely see it.

Vue is coming, and it’s going to be huge, but it hasn’t yet managed to catch enough attention from the people who actually get to make project framework choices, and the midyear bump has thrown its upward trajectory off a bit.

Angular

Most of us remember the bad old days of AngularJS: bloated laggy SPAs that took forever to write, with components stuffed nine layers deep in directory hell. Angular 2 was … well it fixed some of those issues. For one, Typescript support is huge—object-oriented JS, static typing, module support: all things that AngularJS lacked, that give it a lot more flexibility in the hands of the right developer.

The MVVM pattern also adds extra flexibility, although I know some developers find it a bit overcomplicated. Personally, I find the ability to change the model without changing the view to be a huge benefit. Vue uses MVVM as well, but it does set both of these frameworks apart from their competitors.

Angular, like its predecessor, remains relatively heavy, slow, and hard to learn. It gets a lot of power and flexibility out of that, but I understand why some developers shy away from it. A lot of Angular’s strength comes from the very complexity that makes it a bit of a monster to use.

By the Numbers

Vue Angular
Github Stars 152k 53.8k
Github Forks 22.6k 14.9k
DOM Virtual Real
Library Size 80kb 500kb
Data Model MVVM MVVM
Integrations Loads A decent number
Data Binding One Way Two Way

So what does that mean?

I’m going to go out on a limb here: Vue is objectively a better JS framework, but it hasn’t yet picked up the momentum where it’s viable to actually be using it in commercial projects. Angular is good at what it does and it got there first, and it’s going to be very difficult for the upstart Vue to shift.

It’s still a great framework, and I eagerly look forward to seeing whether or not it can take down Angular. Not that I dislike Angular, but things can always be better. The uproar over the RFC got blown hugely out of proportion and never came to anything, and Vue remains a perfect mix of lightweight and powerful. There’s just no work right now, and you’re going to have to keep rolling that boulder uphill for a while longer before it starts to roll downhill.

And at the end of the day, JS is JS—we’re all working with the same programming language, regardless of framework. Jumping from one framework to another isn’t always easy, but the more you do it, the easier it gets. Javascript  jobs for freshers will let you get hands-on experience working with different frameworks. Developers need to develop, after all.

Actually I’ve changed my mind, Angular is b—

Just kidding.

Related Articles

Back to top button