Lagging behind slightly in the popularity department when compared with AngularJS, EmberJS is by no means out of the race. EmberJS is the framework for those who focus on conventions rather than configurations. EmberJS has a very robust routing framework and thus is a good candidate to go with when you have complex nested routes and templates within a page.
CanJS is a relatively new framework so it lacks in terms of popularity. But we were greatly impressed by its ease-of-use and flexibility in our projects so I thought its prudent to include it in the list. CanJS also ranks higher than the other three in terms of performance, especially when you have to render lots of view binding. But since the framework is not as popular, you will find a smaller community support and fewer learning material related to the JS framework. CanJS needs Zepto libraries to work properly.
KnockoutJS is a very popular toolkit among JS web app designers. It’s very lightweight, has every basic view rendering feature an app would need and it’s a perfect tool for those app projects for which you may have to develop your own framework. In fact there are a lot of complete paid frameworks out in the market that are built using KnockoutJS and BackBoneJS. KnockoutJS is expert in data-bindings. It is easy to setup and easy to work upon. However KnockoutJS has no built-in features to convert plain objects into nested observable, severely limiting your ability to structure your app.
BackboneJS is another popular partial framework which developers use to build their own frameworks. Aura, Chaplin, Backbone UI, Geppetto, LayoutManager, Thorax, Marionette, Vertebrae etc are all built using BackboneJS. BackboneJS is awesome if you want to define your templating or use jQuery-like event binding. However the framework Tool-kit is only for advanced developers and it has a steep learning curve. BackBoneJS is good at handling requests, module loading and request routing.