Jake Pruitt

This is where I write.

← Home


Deciding on a JavaScript framework can be a very difficult task. There are so many cases to be made for each framework, as can be seen by the abundance of articles and stack overflow questions about Ember.js vs. AngularJS vs. Backbone.js, and I know that I have asked the question myself many times. There are also many arguments against using frameworks as a whole, as can be read in Henrik Joreteg’s Opinionated Rundown of JS Frameworks and the articles you have ruined HTML and you have ruined JavaScript (Note: those last two articles are very opinionated, so don’t take the titles fully to heart).

To me, shoe shopping has a lot of similarities to shopping for a JavaScript framework that fits your project just right. For this reason, I have created my own opinionated high-level guide to choosing between a framework.

Backbone.js - Dress shoes

Give a girl Backbone.js, and she can conquer the world.

  • Marilyn Monroe

The Good - Backbone.js was the first of the major JavaScript frameworks as we know them today. It looks great when paired with Underscore.js and jQuery, two pillars of JavaScript development in the past. With Backbone, you are in very good professional company, as can be seen by the big names listed in the examples section of their site.

The Bad - Backbone does not support two-way data binding, which means you have to write a lot of basic code to allow your models to update your views. This is sometimes seen as a good thing by some developers since they want to choose exactly how that gets done. If you want to be comfortable, you’ll have to find yourself some insoles.

Ember.js - Boots

Ember.js was made for walking, and that’s just what it’ll do.

  • Nancy Sinatra

The Good - Ember.js brings a lot of power to the front end with modules like ember-data and ember-routing. Ember comes with out of the box two-way data binding, which can have some neat applications. The Ember Core team is constantly improving the open source project, and maintains a very steady release path for new versions of the framework. Plus, Ember has really great guides to getting started.

The Bad - Ember is a very convention-driven framework, much like Ruby on Rails if you come from the server side. These conventions can be a comforting fit to some developers, but can seem stifling to other developers who want the freedom to fit the solution to the problem, rather than fitting the problem to the conventions. Ember is also criticized for injecting <script> tags around text elements in HTML for two-way data binding. This is scheduled to be removed in future versions of the framework.

AngularJS - Toe shoes

It isn’t the mountain ahead that wears you out; it’s the grain of sand in your AngularJS directive.

  • Robert W. Service

The Good - AngularJS rethinks the way web apps work by extending HTML, which feels very natural yet a bit weird to people coming from traditional JavaScript-only frameworks. There has been a lot of popularity for AngularJS in recent years, and it is very future-focused as a whole. I learned AngularJS extensively and have built two hybrid applications with it, so I have difficulty describing it as a whole objectively. One of the best parts about AngularJS is its popularity, which has created a vast number of Youtube videos and great tutorials for learning it. The other great part about it is the Dependency Injection mechanism, which allows Angular to be easily extended.

The Bad - Angular performs a lot of magic and logic under the hood to make two-way data binding possible from a markup perspective. This can make debugging Angular apps a bit difficult, and increasing performance is always a bit hand-wavy unless you have a very good grasp of the Angular core logic. The API for creating directives is also a bit unintuitive, especially for things like transclusion.

Bonus - LEBRON - Barefoot

A simple life is good with me. I don’t need a whole lot. For me, a T-shirt, a pair of shorts, LEBRON on a beach and I’m happy.

  • Yanni

The Good - So, LEBRON is not really a framework, just like being barefoot isn’t really a shoe type. It is a combination of LevelDB, Browserify, and npm. It all comes from this talk by Max Ogden, one of the main culprits behind nodeschool.io. What the LEBRON stack gives you is full control over every single tiny module that you use in your web app. You can use exactly what you need for your project and have full access to a lot of browserify-able modules through npm.

The Bad - LEBRON is not something that is very accessible to beginners, especially since it does not have the same formal learning resources as the other large frameworks. You have to have a pretty good grasp of finding quality modules before starting to use LEBRON.

I am really excited to learn all of these different frameworks, and hopefully will have a reason to dive even deeper into one of these in the future. Personally, I will probably be diving into LEBRON (or something similar, like Ampersand.js) as soon as I have some free time, just so I can learn what it takes to work on a web app from scratch.

What frameworks do you use? What kind of shoes do you think Flux or Polymer are? Let me know in the comments below, or tweet at me @thejakepruitt.