Knockout JS
- Nice tutorials and documentation.
- Nice to have in the smaller project, especially when you are satisfied with something which just provides UI data bindings.
- Difficult to unit test.
- Code separations is a concern.
- If routing is required, then we need to include a new library for it.
Angular JS
- All-in-one package. Provides everything you expect from a MVC framework.
- Built and maintained by Google.
- Extends HTML and at the same time pollutes DOM!!!
- Quick development.
- Easier to unit test. It provides a unit testing API.
- Steep learning curve.
- Very little boilerplate.
- Fewer tutorials and not very good documentation.
- Becoming very popular with dev community.
Backbone JS
- Nicely documented and very stable.
- Relatively old and extensively used.
- Lightweight and small. Therefore widely used on phone also.
- Incomplete framework.
- A lot of boilerplate.
- Clean separation of concerns.
- Strong force to follow certain pattern. Results less reusable code.
- Misses on UI bindings.
Ember JS
- Relatively new.
- Need a better documentation.
- Unique support for composed views which increases code reusability.
- Provides everything which angularjs does.
- Uses Handlebarsjs for tempting views.
Things not covered and assumptions made in the assessment:
- Performance: It is a very subjective matter and depend a lots on the bottlenecks of your application and on the criteria you use to judge it. Backbone is quite extensively used in mobiles and tablets so shouldn’t be a problem at all. Both Ember and Angular claim that they give snappy performance on phone though there is no use case to support this, at least I didn’t find any.
- Sources: Its a mix of my experiences with these frameworks and information gathered from various resources which I consider reliable.