It's a damn shame that knockout.js [1] receives so little attention. Both in terms of not being included in the article, and if it had been included it would look quite poor next to the others (currently "only" 3750 stars). But it's a great framework and for some reason it's often overlooked in spite of other lesser libraries (e.g. spine, if we use the github stars metric)<p>First and foremost, it has excellent documentation. Everything is explained clearly on the site, and it's got a great interactive tutorial [2]. Contrast this to everybody (myself included!) moaning about the angular, ember docs etc.<p>Besides that, it's got <i>deep</i> browser support (all the way back to IE6!), two-way data-binding, plus it's intuitive and simple. In fact, combined with the excellent docs, I'd wager any competent dev could have the gist of knockout and be quite productive within an hour. It is also extremely easy to extend if you wish to plugin external functionality. Which leads to the final point - it plays well with other libraries that you're probably familiar with. e.g. I usually pair with Zepto, jQuery and/or AmplifyJS.<p>In the interest of being balanced, I must say it does have some bad points. The main thing for me is lack of architectural guidance. Nowhere is it explained the best practices for structuring apps. Nor is there any guidance on unit testing. You can, of course, work out all these things yourself, but why must the same problem be solved over and over? Set some conventions and be done with it! That said, there's a framework of sorts being built on top of knockout called Durandal [3] that aims to solve some of these problems. I've not used it yet, but it looks very neat. Also you'd be remiss not to check out Ryan Niemeyer's website [4] for lots of guidance and useful plugins (he's one of the core contributors I believe)<p>[1] <a href="http://knockoutjs.com/" rel="nofollow">http://knockoutjs.com/</a>
[2] <a href="http://learn.knockoutjs.com/" rel="nofollow">http://learn.knockoutjs.com/</a>
[3] <a href="http://durandaljs.com/" rel="nofollow">http://durandaljs.com/</a>
[4] <a href="http://www.knockmeout.net/" rel="nofollow">http://www.knockmeout.net/</a>
I'm a big fan of Backbone. I'm used to do most of the scripting by myself and I don't like to mess my html data-attributes with javascript libraries. Also the source code is pure and self-explainatory, supports underscore and is used to be paired with CoffeeScript. Because of that, I'm pretty fast and flexible.