History’n’Evolution of JS MV* frameworks.

These days, I found nice description of all my past diving over the web development and JavaScript world.


(c) “Craig at Funny Ant” craig AT funnyant.com

Generations of Frameworks

It’s important to understand the chronology of these libraries and frameworks to make a good choice.

Vanilla JavaScript

In the beginning, there was just JavaScript and almost everyone was afraid to use it because of the inconsistent DOM APIs across different browsers which resulted in lots of bugs.


Next, jQuery came along and made DOM manipulation and AJAX calls less risky by abstracting away the differences into one consistent API.  As developers began to write more and more JavaScript and jQuery to make their applications more innovative their code quickly became messier and difficult to manage.

1st Generation

Backbone arrived and provided organization to that messy jQuery code and allowed a new generation of applications to be built in the browser by adding a thin layer on top of the familiar jQuery code developers were already writing.  Numerous Backbone clones emerged to create a first generation of libraries including Spine and JavaScriptMVC but Backbone survived as the favorite.  Developers still found it difficult to be productive and longed for features such as data binding that they had used in Rich Internet Application (RIA) technologies like Flex and Silverlight.  Knockout came along and provided data binding but didn’t have any other features that developers needed to build single-page applications.

2nd Generation

At this point a second generation of more robust frameworks began to come out.  AngularJS emerged with all the needed framework pieces in one box: data binding, routing, templating, persistence as well as a compelling testing story and a more declarative syntax.  Ember was also built with similar features to AngularJS but a stronger router and more emphasis on URLs and not breaking the back button.  Other notable frameworks from this second generation are CanJS and Durandal.  Durandal showed innovation and promise but recently announced its plans to merge with AngularJS although Durandal will continue to be supported and evolve. CanJS is a slimmed down version of JavaScriptMVC from the first generation with more data binding support.  CanJS just doesn’t seem to have the community around it but remains popular within its niche.

Will History Repeat Itself

It’s interesting to note that jQuery was the one clear winner in the DOM manipulation library debate over Scriptaculous, MooTools, and many others.  Similarly, the first generation of JavaScript MVC Frameworks also had one notable survivor in Backbone.  After seeing AngularJS merge with Durandal, one can’t help but wonder if Ember will be able to thrive in the long term. But most including myself believe it is still too early to make that pronouncement, particularly because of the strong allegiance in the Ruby community to Ember.

(c) “Craig at Funny Ant” craig AT funnyant.com

So, I’m between 1st and 2nd Generation levels now. 🙂 Future looks bright 🙂

Additionally from here:


Metric AngularJS Backbone.js Ember.js
Stars on Github 27.2k 18.8k 11k
Third-Party Modules 800 ngmodules 236 backplugs 21 emberaddons
StackOverflow Questions 49.5k 15.9k 11.2k
YouTube Results ~75k ~16k ~6k
GitHub Contributors 928 230 393
Chrome Extension Users 150k 7k 38.3k

3 thoughts on “History’n’Evolution of JS MV* frameworks.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s