User:Matrika Rohatgi/CanJS

CanJS is a client side MVC library for building web applications. It simplifies the development of complex programs. It provides all the structure of the MVC (Model-View-Control) pattern along with templates with live binding and routing support. One of it's advantages is that it has a rich set of extensions and plugins and supports jQuery, Zepto, Mootools, YUI and Dojo. It was introduced in 2012 by Bitovi.

Features of Can JS

 * Can JS is flexible . This is possible because Can JS supports multiple libraries and frameworks. For example, if we would like to share our code between disparate platforms such as a Zepto mobile app and a jQuery desktop app, we can do so using Can JS. Although CanJS is extracted from JavaScriptMVC it can support almost all of its MVC functionality through plugins.
 * Can JS occupies very little size, compared to other Javascript frameworks such as Angular or Ember. Hence, it has very high speed. This high speed is also achieved by live-binding, which updates only when required.

Packages that are included in Can JS:

 * can.Construct – A Package for inheritable constructor functions
 * can.Observe – A package for key-value binding
 * can.Model – A package that observes connected to a RESTful JSON interface
 * can.view – A package for template loading, caching, rendering
 * can.EJS – A package for live binding of templates
 * can.Control – A package for declarative event bindings
 * can.route – A package for back button and bookmarking

Migrating Can JS 2.0
Although Can JS 2.0 is very backward compatible with Can JS 1.1, yet there needs to be some changes when migrating from Can JS 1.1 to Can JS 2.0. Can JS 2.0 introduced new features


 * 2 way bindings
 * custom elements with can.Component
 * mustache event bindings