MeteorJS vs AngularJS ain't a thing

I am sure you see/hear it frequently…

What should I learn, Meteor or Angular?

We all know that is the wrong question, so below you will find my answer ☺

To sum it up: Angular can be added to any stack. Meteor is a stack (albeit a Super-Stack). Like an Orange compared to an Orange Tree.

My opinion on Meteor

Meteor actually modifies NodeJS and becomes your server. It supplies everything you need to run a web/mobile app. You add frameworks on-top of Meteor’s platform. Meteor comes with a bunch of built-in frameworks. One of the “built-ins” is a View framework called Blaze which is a better comparable to Angular. Meteor’s “built-ins” can be replaced. If you want to replace Blaze with Angular then you can! Simply run:

$ meteor add urigo:angular

Boom you have Cheetos in your Jiffy.

The above command uses a community package. Meteor is extremely extensible by adding packages from Atmosphere, NPM & even Bower. Many agree Meteor is quickly becoming the standard for new startups.

My opinion on Angular

Angular is sorta the King of modern front-end frameworks. It hits a sweet spot of being able to control almost the entire front-end while allowing any backend. Its thoughtfulness of what and how it controls has made it stand the test of time (in software years). The collaboration with is one recent example.

If you want to play it safe and develop a front-end in a very well defined space then AngularJS is the battle-tested man for the job.

Why I think people get confused

It makes sense that newcomers are confused in thinking Meteor and Angular are similar when they really are not.

  • Real-time UI: Angular provides real-time front-end data binding between elements. At first glance it looks like Meteor does too but at deeper inspection you'll realize Meteor is reactive on the back-end and front-end! Something Angular could never do since it is a front-end only framework.
  • *JS: Both have *JS at the end of their names since both are made with the Javascript language. Yes they share the same language but again Angular is in the browser, while Meteor is in the server and browser. Confusing these two things is like confusing Javascript with Java.
  • Community References: Angular is super popular. Its popularity makes it a good reference and a great buzz-word to get traffic to your blog or twitter post. But (as this post points out) Angular vs. Meteor is an inaccurate comparison. People title blog posts this way purely to achieve emotional marketing.

If you want to be “known” then make sure to beat up the biggest/most-popular kid on the playground.

Real Competition

Angular wants to control your UI, Meteor wants to control your whole app. So who are the worthy adversaries of these monsters?

Notable Angular (UI Framework) Challengers

Notable Meteor (Node Platform) Challengers

So bro, answer me… what should I learn?

First - Javascript, jQuery & maybe Node.

Second, It depends on your end goals…

… Wanna work for Facebook? Learn React, Flux, PHP, etc.
… Wanna work for Google? Learn Angular, Dart, Polymer, Python, etc.
… Wanna work for a 2 to 4 year old startup? Learn M-E-A-N
… Wanna work for a 5 to 10 year old startup? Learn Angular & Ruby on Rails
… Wanna create a new startup and impress everyone with how fast you add new features? Learn Meteor (& add whatever UI framework you want)

One last note for beginners. When building a web app you are going to deal with a lot of components (servers, databases, frameworks, pre-processors, packages, testing, …). To manage all this we created automated builders like Grunt & Gulp. After all, making web apps is serious and complicated business… or did we just make it complicated so it seems serious??

If you rather not bother with all that complicated build stuff then choose Meteor, it does it all auto-magically.

Good reads to better understand the state of things

- Why Yahoo no longer maintains YUI
- Wikipedia: Single-page application