On one hand, each javascript framework has its unique advantages and it is reasonable to say that each one has its place in web development. On the other hand, these frameworks have a similar goal. They are all excellent frameworks and there will certainly be a place for each one as web apps continue to become more and more sophisticated. The factors that determine which one you choose will be based on a combination of your projects needs and your personal preference of how you as a developer like to accomplish things.

Knockout

For a small project or improving an existing project knockout is a great choice. It is simple to get started with and integrates nicely with other 3rd party libraries. And if you decide at some point that you need a more powerful framework like Angular or Ember, you will already be ahead of the learning curve since they all use data-binding in a similar way. If you want to keep knockout you can easily add things like routing and data-access features through a number of third party libraries.

For larger projects knockouts view model could start to get a bit complicated because computed data is not separated nicely from persistable data, and increasing numbers event handlers may become hard to keep track of.

Backbone

If you are an experienced javascript programmer looking for a mature, proven framework that provides MVC architecture to your code while maintaining as much low-level control as possible and offering easy REST api data access plus routing, backbone would be a good choice. For larger scale projects, or if you don’t like writing so much boiler-plate code, the plugin marionette.js could be helpful.

Angular

If you need a fully loaded framework that seeks to rival native apps, reduce the amount of time and code it takes to write a web app, and you can handle a somewhat steep learning curve Angular or Ember would be a good choice. It is very hard to choose between Angular and Ember as the both seek to do similar things.

Angular has appeal in the fact that it is backed by Google, it is somewhat more mature, and it offers some interesting features like custom HTML directives and integrated testing tools. It is also easier to localize it to run in specific areas of your app to avoid conflicting with other javascript libraries you are using elsewhere.

Ember

Ember like Angular is a fully loaded framework that seeks to rival native apps and reduce the amount of time and code it takes to write a web app with an even steeper learning curve than Angular. Some developers may prefer Embers style since it is modeled after the Cocoa framework in iOS development making it similar to programming native apps.

Link to Part V: Ember.js

  • Pingback: The Battle of Modern Javascript Frameworks: Part V – Ember.js | SoftFinity -()

  • Nice writeup! I think you would find CanJS (canjs.com) interesting as well. It is the best of both the Backbone and Ember worlds, and better than the sum of its parts.

    • Nice write up! I would also like to see Meteor.js included.

      • I don’t believe Meteor fits in this analysis for a couple of reasons.

        1. Meteor is still in 0.8 release as of 05/2014. It is still being built and they recently replaced handlebars with spacebars for templating.

        2. Meteor is a full UI and backend framework, which is different than the above referenced UI ONLY frameworks.

        If you add Meteor, then Sails, Tower JS, Derby JS, etc would have to be included.

  • Nice overview!

  • I’m very excited that someone is going to the effort to research all these frameworks and summarize them. I would encourage you to continue looking at the other frameworks and provide similar summaries for them as well. Again, thank you!