Get Help from Experts
Get help from experts on the topic of JavaScriptMVC. Click here to add JavaScriptMVC to your Learning List and place a request within our network.
Provide Expertise
Become a network resource. Offer paid consulting, training and coaching on the topic of JavaScriptMVC. Click here to add this topic to your Skills List.
Developer(s) Justin B. Meyer, Brian Moschel
Initial release May 2008; 8 years ago (2008-05)
Stable release
3.3 / July 23, 2013; 3 years ago (2013-07-23)
Written in JavaScript
Operating system Cross-platform
License MIT License[1]

JavaScriptMVC is an open-source rich Internet application framework based on jQuery and OpenAjax. It extends those libraries with a model-view-controller architecture and tools for testing and deployment. Because it does not depend on server components, it can be combined with any web-service interface and server-side language like ASP.NET, Java, Perl, PHP, Python, or Ruby.


The first release of JavaScriptMVC was published in May 2008. JavaScriptMVC 2.0 became stable in June 2009 and is based directly on jQuery, mainly to keep the code size small and to focus on its unique features. Version 3.0 was released in December 2010. CanJS, JavaScriptMVC's extracted MVC parts, were released in April 2012.


A controller is a list of functions that gets called back when the appropriate event happens. The name of the function provides a description of when the function should be called. By naming functions in the correct way, the Controller recognizes them as Actions and hooks them up correctly, for example:

   ".todo mouseover": function(el, ev){
   ".todo mouseout": function(el, ev){
   "#create_todo click" : function{
     this.find("ol").append("New Todo");

A controller can also handle OpenAjax events, for example:

   "main.test subscribe": function(ev, publisherData){
     // TODO: do something
   "other.event subscribe": function(ev, publisherData){
     // TODO: do something


JavaScriptMVC uses EJS templates to render HTML data in controllers and inject them into the DOM. The syntax was inspired by ERuby and is similar to PHP or other server-side template engines.

For example, file "test.ejs" ( data = [ "Hello", "World" ] ):

<% for( var i=0, len = data.length; i < len; i++ ) { %>
 <li><%= data[i] %></li>
<% } %>

produces the following "output":



The Model class provides basic functionality to organize the application's data layer.

  findAll: '/todos',
  findOne: '/todos/{id}',
  create: '/todos',
  update: '/todos/{id}',
  destroy : '/todos/{id}'


JavaScriptMVC also comes with a comprehensive test plug-in that supports classic unit tests for models, as well as functional tests, that are required to deal with event driven architectures. Tests can be run on the command line with Rhino, using Selenium and during development with the integrated test console pop-up window.


  1. ^ "JavaScriptMVC license". bitovi. Retrieved 2012. 

External links

  This article uses material from the Wikipedia page available here. It is released under the Creative Commons Attribution-Share-Alike License 3.0.


Manage research, learning and skills at IT1me. Create an account using LinkedIn to manage and organize your IT knowledge. IT1me works like a shopping cart for information -- helping you to save, discuss and share.

  Contact Us  |  About |  IT Training & References |  IT Careers |  IT Hardware |  IT Software |  IT Books