What Knockout isn’t:
- A framework. It is a library, intended to work in unison with your other technologies.
- A complete solution. You’ll often add additional libraries to suit your use-case (ex: to implement routing you could add in Sammy.js)
- Slow. If done correctly (deferred updates, using pure computed functions and binding to prototypes) you can achieve tremendous performance.
- Only good for small projects. Knockout can scale amazingly, I've built/worked on several large-scale projects with great success.
What Knockout is:
- Focussed. It offers several core concepts, that serve as a foundation for building modern data-drive client applications.
- Adaptive. It is small enough to be justifiable on small projects, and powerful enough to use on large applications.
- Empowering. Using Knockout puts the decisions in your hands, you will build it all and thus understand it all. My favorite analogy is a carpenter building a piece of furniture vs. an individual putting together a piece of Ikea furniture.
- Organized. Once you begin thinking like a "Knockout" programmer, you can achieve a wonderful separation of your view logic, event handlers, components and data bindings.
As someone who uses Knockout daily, I am admittedly biased toward the advantages of the small-but-mighty library. But the power in the small concepts it exposes, are undeniably amazing. I highly recommend giving it a
self.peek() on your next project.