Sunday, 2 September 2012

Which JavaScript Framework should I Used for Single Page Architecture?




Following Comparison from Steven Sanderson.




Disagreement: What’s flexible, what’s integrated.
Each technology has different levels of prescriptiveness:
Views
URL routing
Data storage
AngularJS
Built-in DOM-based templates (mandatory)
Built-in (optional)
Built-in system (optional)
Backbone
Choose your own (most used handlebars.js, a string-based template library)
Built-in (optional)
Built-in (overridable)
Batman
Built-in DOM-based templates (mandatory)
Built-in (mandatory)
Built-in system (mandatory)
CanJS
Built-in string-based templates (mandatory)
Built in (optional)
Built in (optional)
Ember
Built-in string-based templates (mandatory)
Built-in (mandatory)
Built-in (overridable)
Knockout
Built-in DOM-based templates (optional, can do string-based too)
Choose your own (most use sammy.js or history.js)
Choose your own (e.g., knockout.mapping or just $.ajax)
Meteor
Built-in string-based templates (mandatory)
Built-in (mandatory?)
Built-in (Mongo, mandatory)
Spine
Choose your own string-based templates
Built-in (optional)
Built-in (optional?)
As expected, whenever a library leaves a decision open, they argue it is better overall to guarantee composablity with arbitrary 3rd-party libraries. And the obvious counter-argument is that integration can be more seamless if built-in. Again, based on my conversations, the audience was split and opinions went in all directions — usually based on how much other technology stack an individual was wedded to.
Quote from Tom Dale of Ember: “We do a lot of magic, but it’s good magic, which means it decomposes into sane primitives.


Another Comparison 

The Contenders

Here is a table showing all of the frameworks support for the above features. Click through the title for more detail.
FrameworkUI BindingsComposed ViewsWeb Presentation LayerPlays Nicely With Others
Backbone.js
SproutCore 1.x
Sammy.js
Spine.js
Cappuccino
Knockout.js
Javascript MVC
Google Web Toolkit
Google Closure
Ember.js
Angular.js
Batman.js




I am still not in a position of choosing any of them for my single page architecture applications whereas my sense with Angular.js.
will see. 

cheers !!!



No comments:

Post a Comment