Angular’s biggest drawback is having many ways of accomplishing the same thing. And, until you use Angular for a fairly big project, it’s difficult to figure out exactly what the best approach is. You also need to be careful to clean up events and DOM elements to avoid memory leaks. If you want a more opinionated framework that forces you to structure code in a particular way, then you might want to look at another option.
Unfortunately, the "hands-off" approach of Backbone may mean implementing many features that are already in other frameworks. Backbone doesn’t include data-binding—the ability to have changes in one place trigger a change elsewhere. You could set this up on a per-case basis, but it’s not a core feature of Backbone.
On the downside, after you get past the basics of Ember the learning curve can be pretty steep. Since the API has changed so rapidly, you may also find a lot of the online code examples are out of date.
Still Not Sure?
Hopefully this quick guide has been useful. If you still aren’t sure which is the clear winner, the best way to choose a framework may be to test them out yourself. At Code School we offer intro courses on AngularJS, Backbone.js, and Ember.js, and there are plenty of other resources online to help you learn.
About the Author:
Gregg Pollack is CEO of Code School. Follow him on Twitter at @greggpollack. Special thanks to Adam Rensel, Adam Fortuna, Carlos Souza and Dray Lacy for contributing to the framework showdown, and Lauren Orsini for the featured photo.