<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    修改buffalo代碼一

    Posted on 2006-03-02 19:46 killvin 閱讀(220) 評論(0)  編輯  收藏 所屬分類: javascript

    Buffalo介紹

    Web正隨著Amowa/Ajax的引入開發開始變得有趣!

    Buffalo是Amowa思想實現的關鍵組件。Buffalo中定義了Web遠程調用的傳輸基礎,并且將遠程調用對象完整的序列化到了本地,成為可以被JavaScript編程觸及的對象。Buffalo中的重要組件 - BuffaloBinding,提供了將JavaScript對象綁定到HTML元素的能力。這種綁定將是無侵入的,只需要在HTML元素中加入若干個不影響排版的屬性,即可將數據與界面綁定。

    Buffalo1.1之前的版本重要的功能主要集中于遠程調用與Java對象/JavaScript對象之間的雙向序列化,這個特性已經被眾多的應用久經考驗,被認為是健壯的。它大大減少了在Java對象與JavaScript對象之間需要考慮的細節,開發者可以更用心地進行業務設計和界面設計。1.2版本的推出,引入了新的眾多的特性,包括:新的重新改寫的Spring集成;與流行javascript庫prototype的集成;支持瀏覽器前進后退按鈕,等等。Buffalo努力使Web2.0的概念在這個小小的輕量級的框架中得到體現,讓你的應用具備更豐富的表現。

     

    問題

    可是在使用Buffalo傳輸對象的過程中我發現Buffalo并不能夠很好的傳遞用戶自定義的對象,不光如此在與作者的討論過程中我還發現很多的人對于Javascript程序的規范根本不屑一顧,似乎選擇了Javascript本身就是選擇了"自由編程",可是真的如此嗎?

    其實Javascript是一個比較純粹的OO語言,并不想一些報道中所說的那樣,對于封裝、繼承、多態Javascript同樣可以完成,既然它是OO的語言,就理所應當的按照某種規范來編寫代碼,正如JavaScript說分明 中說得那樣,編寫Javascript不是一件簡單的事情,關鍵是很多人亂用了這個語言,從而導致給很多的朋友以為寫Javascript就是很沒有水準的事情(偶以前也是如此),但我最近發現用Javascript這樣的動態語言沒有一個很好的語言規范,你開發出來的應用只能夠停留在小型系統之上,而對于比較大型的應用開發,這樣寫出來得代買根本無法復用!

    再來說說Buffalo傳輸對象的問題,以下是我自定義的Node對象

    function Node(_id , _type)
    {

     //log("create node object!!!");
     //============================== property =================================//
        //=========================================================================//
     var id = _id;
     var type = _type; //<- type的出現在OO世界里本身就是背叛
     var brush = null //節點的物理表現句柄
     
     var rList = new Array();//左節點列表
     var lList = new Array();//右節點列表
     
     var rLine = new Array();//節點的左線列表
     var lLine = new Array();//節點的右線列表

     var x = 0;//節點的x坐標
     var y = 0;//節點的y坐標

     var m = false; //標識節點是否可移動
     var r = false; //標識節點是否能夠建立聯系

     var name = ""; //節點的名稱

     //================================ method =================================//
        //=========================================================================//

     this.getType = function()
     {
      return type;
     }
     this.setType = function(_t)
     {
      type = _t;
     }
     this.setName = function(_n)
     {
      name = _n;
     }
     this.getName = function()
     {
      return name;
     }
     this.setId = function(_i)
     {
      id = _i;
     }
     this.getId = function()
     {
      return id;
     }
    }

    然而在使用Buffalo的時候Node對象根本就無法傳遞,而導致這個問題的原因竟然是我沒有"自由的編寫Javascript"!其實問題就出在doStructXML 方法上,作者在這里有意的"避開"了這個問題,所以在傳遞Node的時候對于其私有的方法Buffalo是根本就不考慮的,FAINT!

    原先

     doStructXML : function(data){
      var boClass = data[Buffalo.BOCLASS];
      var boType = boClass ? boClass : "java.util.HashMap";
      var xml = "<map>\n";
      xml += "<type>" +boType+ "</type>\n";

      for (var i in data){
       if (data[i] != boType) {
        if (typeof(data[i]) == "function") continue; /* the function shouldn't transfered. */
        xml += this.getParamXML(this.dataTypeOf(i),i)+"\n";
        xml += this.getParamXML(this.dataTypeOf(data[i]),data[i]) + "\n";
       }
      }
      xml += "</map>\n";
      return xml;
     },

    修改后

     doStructXML : function(data){
      var boClass = data[Buffalo.BOCLASS];
      var boType = boClass ? boClass : "java.util.HashMap";
      var xml = "<map>\n";
      xml += "<type>" +boType+ "</type>\n";

      for (var i in data){
       if (data[i] != boType) {
        if (typeof(data[i]) == "function")
        {
         /*判斷方法名稱*/
         if(i.substring(0,3) == 'get')
         {
          var _name = i.substring(3,i.length).toLowerCase();
          var _value = data[i]();
          //alert("functin name[" + this.dataTypeOf(_name) + "]=" + _name
          // + " | value[" + this.dataTypeOf(_value) + "]=" + _value);

          xml += this.getParamXML(this.dataTypeOf(_name),_name)+"\n";
          xml += this.getParamXML(this.dataTypeOf(_value),_value) + "\n";
         }
         continue; /* the function shouldn't transfered. */

        }
        
        xml += this.getParamXML(this.dataTypeOf(i),i)+"\n";
        xml += this.getParamXML(this.dataTypeOf(data[i]),data[i]) + "\n";
       }
      }
      xml += "</map>\n";
      return xml;
     }

     

    總結

    1。Javascript的編寫是否應該遵守一定的規范,其實屬于程序員自身休養的問題,但我還是覺得復用JAVA的編碼規范不是壞事情!

    2。時刻記住Buffalo是建立在burlap協議的基礎上的,我們應該把注意力放在burlap上而不僅僅只是Buffalo!

    主站蜘蛛池模板: 最近2019免费中文字幕视频三| 污网站免费在线观看| 亚洲AV女人18毛片水真多| 国产精品免费αv视频| 国产成人久久AV免费| 在线观看免费a∨网站| 亚洲av永久无码精品秋霞电影影院| ZZIJZZIJ亚洲日本少妇JIZJIZ| 亚洲欧洲久久久精品| 亚洲精品美女久久777777| 亚洲成人中文字幕| 精品久久久久久无码免费| 在线观看91精品国产不卡免费| 亚洲图片激情小说| 亚洲AV无码成人精品区狼人影院| 久久经典免费视频| 亚洲最大在线观看| 99re免费在线视频| 亚洲高清中文字幕| 久久亚洲免费视频| 亚洲Aⅴ在线无码播放毛片一线天| 亚洲福利视频导航| 99久在线国内在线播放免费观看| 亚洲VA中文字幕无码一二三区| a毛片免费全部播放完整成| 日本免费网址大全在线观看| 另类专区另类专区亚洲| 亚洲精品NV久久久久久久久久| 69视频在线观看高清免费| 亚洲国产精品成人久久久| 久久久久亚洲AV成人网| 日韩亚洲国产高清免费视频| 好先生在线观看免费播放| 精品亚洲视频在线| 国内精品免费麻豆网站91麻豆| 亚洲一区精品视频在线| 中文字幕免费人成乱码中国| 免费视频淫片aa毛片| 粉色视频免费入口| 国产成人亚洲合集青青草原精品| 久久99青青精品免费观看|