JavaScriptMVC

来自Local Chinese Wikipedia
跳转到导航 跳转到搜索
JavaScriptMVC
File:Javascriptmvc.png
開發者Justin B. Meyer, Brian Moschel
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    源代码库
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    编程语言JavaScript
    引擎
      Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
      操作系统跨平台
      许可协议MIT License[1]
      网站www.javascriptmvc.com

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

      歷史[编辑]

      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 引擎的命令列模式執行。

      參考資料[编辑]

      1. Javascipt MVC license. jupiterjs. [16 April 2012]. [永久失效連結]

      外部連結[编辑]