
When implementing Model View ViewModel practices, creating applications with Knockout.js was very easy. Much of the code you're writing looks like normal JavaScript objects with some Knockout observable logic dropped in. Knockout gives you the ability to create applications as complex as you want, with data properties as complex as you can imagine, and the data-binding it offers means your data will show up as you want it.
What amazed me was how simple and small some of the changes were when I needed to do something complex. Most code changes were 1-4 lines long, to create some custom feature that would normally be 100 lines of jQuery or Dojo code. Review collected by and hosted on G2.com.
Knockout differs from some more comprehensive frameworks (like Angular or Ember) where everything is included. Knockout provides data-binding, but lacks features found in full frameworks like routing or UI controls. However, you can mix and match other libraries in your app that handle those features, and it integrates very well. You can mix in jQuery UI user controls, or a library like Sammy.js for routing, and let Knockout handle the data binding and keeping up with the state of your application. It depends on how much you want to get your hands dirty with mixing in different libraries.
The one issue I had was that support for more complicated examples and integration with other libraries was hard to find. I'd often find the answer somewhere on StackExchange, or buried in a 5 year old blog that was abandoned 3 years ago. Review collected by and hosted on G2.com.


