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.“
Extracted From - http://blog.stevensanderson.com/2012/08/01/rich-javascript-applications-the-seven-frameworks-throne-of-js-2012/
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.
| Framework | UI Bindings | Composed Views | Web Presentation Layer | Plays 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