my 2 cents worth.
preamble – i have worked with both angular and knockout.
I’m on my 3rd non trivial front end built with a MVVM/MVC lib.
I started with knockout because its MVVM is very similar to the wpf/silverlight mechanics. And it works well. The tutorials and documentation are top notch. All your coders will be able to work with knockout.js within days or if they have used mvvm under .net, then within hours.
However, these days I am using angular and will probably stick with it for the following reasons.
-
angular is a complete framework – knockout is really about just the 2
way binding. you still need other libraries like backbone.js/jquery
to do the rest of your work. -
angular has dependency injection. which is perfect for adding
mocking for testing as well as giving structure to your code. -
angular treats normal JS variables as observables within its $scope
object. that means you dont have to declare them in a special way
I’m not an angular fanboy, i still think they could move more over to the MVVM architecture instead of the “funky” MVVM/MVC hybrid architecture they currently have.
The biggest problem with angular is the documentation. Compared to knockout, it is woeful. It will add additional time and cost to getting your coders up to speed. Once they are there however, it is currently the best choice IMHO.