JavaScriptMVC

JavaScriptMVC 是一套開放原始碼的多樣化網際網路應用程式框架，以 jQuery 與 OpenAJAX 為基礎。JavaScriptMVC 利用 MVC 架構與工具擴展這些函式庫，以便開發與測試。由於 JavaScriptMVC 不需要任何伺服器端的配合，因此它可以和任何的網站服務介面與程式語言整合，如 ASP.NET、Java、Perl、PHP、Python 或 Ruby。

 歷史 
JavaScriptMVC 的第一個版本是在2008年5月釋出。穩定版的 JavaScriptMVC 2.0 在2009年6月釋出，並以 jQuery 為基礎。主要開發目標為維持程式碼的簡短和專注在它獨特的功能上。3.0版本在2010年12月釋出。而從  JavaScriptMVC 中所獨立出來的 MVC 架構「CanJS」則在2012年4月釋出。

 控制器 
控制器（Controller）是由許多函式所組成，這些函式會在適當的事件發生時被呼叫。函式名稱提供這些函式被呼叫時的描述。只要正確地命名函式，控制器就能夠辨認這些函式並在正確的時機呼叫它們。舉例來說：

 $.Controller('TodosController',{
   ".todo mouseover": function(el, ev){
     el.css("backgroundColor","red")
   },
   ".todo mouseout": function(el, ev){
     el.css("backgroundColor","")
   },
   "#create_todo click" : function(){
     this.find("ol").append("New Todo");
   }
 });

在控制器中也可以處理 OpenAjax 事件，例如：

 $.Controller('TodosController',{
   "main.test subscribe": function(ev, publisherData){
     // TODO: do something
   },
   "other.event subscribe": function(ev, publisherData){
     // TODO: do something
   }
 });

 視圖 
JavaScriptMVC 使用 EJS 樣板來處理控制器裡的 HTML 資料並且將它們插入 DOM 中。這些語法是借鏡自 ERuby，且與 PHP 或其他伺服器端語言的樣板引擎相似。

以「test.ejs」（data = [ "Hello", "World" ]）為例：

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

這會輸出如下的結果：

<ul>
 <li>Hello</li>
 <li>World</li>
</ul>

 模型 
模型（Model）類別提供了組織應用程式資料層級的基本功能。

 $.Model('Todo',{
  findAll: '/todos',
  findOne: '/todos/{id}',
  create: '/todos',
  update: '/todos/{id}'
  destroy : '/todos/{id}'
 },{});

 測試 
JavaScriptMVC 還提供了一套完整的測試外掛，支援模型的單元測試，以及需要處理事件驅動結構的功能性測試。測試工具可以在 Rhino 引擎的命令列模式執行。

 參考資料 

 外部連結 
官方網站 
GitHub 專案 
Google Code 上的舊專案頁面 

Category:網站開發
Category:AJAX
Category:JavaScript
Category:MVC