
_START_ARTICLE_
JavaScriptMVC
_START_SECTION_
历史
_START_PARAGRAPH_
JavaScriptMVC 的第一个版本是在2008年5月释出。稳定版的JavaScriptMVC 2.0 在2009年6月释出，并以jQuery 为基础。主要开发目标为维持程式码的简短和专注在它独特的功能上。3.0版本在2010年12月释出。而从JavaScriptMVC 中所独立出来的MVC 架构“CanJS”则在2012年4月释出。
_START_SECTION_
控制器
_START_PARAGRAPH_
控制器（Controller）是由许多函式所组成，这些函式会在适当的事件发生时被呼叫。函式名称提供这些函式被呼叫时的描述。只要正确地命名函式，控制器就能够辨认这些函式并在正确的时机呼叫它们。举例来说：_NEWLINE__NEWLINE_ $.Controller('TodosController',{_NEWLINE_   ".todo mouseover": function(el, ev){_NEWLINE_     el.css("backgroundColor","red")_NEWLINE_   },_NEWLINE_   ".todo mouseout": function(el, ev){_NEWLINE_     el.css("backgroundColor","")_NEWLINE_   },_NEWLINE_   "#create_todo click" : function(){_NEWLINE_     this.find("ol").append("New Todo");_NEWLINE_   }_NEWLINE_ });_NEWLINE_在控制器中也可以处理OpenAjax 事件，例如：_NEWLINE__NEWLINE_ $.Controller('TodosController',{_NEWLINE_   "main.test subscribe": function(ev, publisherData){_NEWLINE_     // TODO: do something_NEWLINE_   },_NEWLINE_   "other.event subscribe": function(ev, publisherData){_NEWLINE_     // TODO: do something_NEWLINE_   }_NEWLINE_ });
_START_SECTION_
视图
_START_PARAGRAPH_
JavaScriptMVC 使用 EJS 样板来处理控制器里的HTML 资料并且将它们插入DOM 中。这些语法是借镜自ERuby，且与PHP 或其他服务器端语言的样板引擎相似。_NEWLINE_以“test.ejs”（data = [ "Hello", "World" ]）为例：_NEWLINE_<ul><% for( var i=0, len = data.length; i < len; i++ ) { %>_NEWLINE_ <li><%= data[i] %></li><% } %>_NEWLINE_<ul>_NEWLINE_这会输出如下的结果：_NEWLINE_<ul>_NEWLINE_ <li>Hello</li>_NEWLINE_ <li>World</li></ul>
_START_SECTION_
模型
_START_PARAGRAPH_
模型（Model）类别提供了组织应用程序资料层级的基本功能。_NEWLINE__NEWLINE_ $.Model('Todo',{_NEWLINE_  findAll: '/todos',_NEWLINE_  findOne: '/todos/{id}',_NEWLINE_  create: '/todos',_NEWLINE_  update: '/todos/{id}'_NEWLINE_  destroy : '/todos/{id}'_NEWLINE_ },{});
_START_SECTION_
测试
_START_PARAGRAPH_
JavaScriptMVC 还提供了一套完整的测试外挂，支援模型的单元测试，以及需要处理事件驱动结构的功能性测试。测试工具可以在Rhino 引擎的命令列模式执行。