<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 閱讀(226) 評(píng)論(0)  編輯  收藏 所屬分類: javascript

    Buffalo介紹

    Web正隨著Amowa/Ajax的引入開(kāi)發(fā)開(kāi)始變得有趣!

    Buffalo是Amowa思想實(shí)現(xiàn)的關(guān)鍵組件。Buffalo中定義了Web遠(yuǎn)程調(diào)用的傳輸基礎(chǔ),并且將遠(yuǎn)程調(diào)用對(duì)象完整的序列化到了本地,成為可以被JavaScript編程觸及的對(duì)象。Buffalo中的重要組件 - BuffaloBinding,提供了將JavaScript對(duì)象綁定到HTML元素的能力。這種綁定將是無(wú)侵入的,只需要在HTML元素中加入若干個(gè)不影響排版的屬性,即可將數(shù)據(jù)與界面綁定。

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

     

    問(wèn)題

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

    其實(shí)Javascript是一個(gè)比較純粹的OO語(yǔ)言,并不想一些報(bào)道中所說(shuō)的那樣,對(duì)于封裝、繼承、多態(tài)Javascript同樣可以完成,既然它是OO的語(yǔ)言,就理所應(yīng)當(dāng)?shù)陌凑漳撤N規(guī)范來(lái)編寫代碼,正如JavaScript說(shuō)分明 中說(shuō)得那樣,編寫Javascript不是一件簡(jiǎn)單的事情,關(guān)鍵是很多人亂用了這個(gè)語(yǔ)言,從而導(dǎo)致給很多的朋友以為寫Javascript就是很沒(méi)有水準(zhǔn)的事情(偶以前也是如此),但我最近發(fā)現(xiàn)用Javascript這樣的動(dòng)態(tài)語(yǔ)言沒(méi)有一個(gè)很好的語(yǔ)言規(guī)范,你開(kāi)發(fā)出來(lái)的應(yīng)用只能夠停留在小型系統(tǒng)之上,而對(duì)于比較大型的應(yīng)用開(kāi)發(fā),這樣寫出來(lái)得代買根本無(wú)法復(fù)用!

    再來(lái)說(shuō)說(shuō)Buffalo傳輸對(duì)象的問(wèn)題,以下是我自定義的Node對(duì)象

    function Node(_id , _type)
    {

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

     var x = 0;//節(jié)點(diǎn)的x坐標(biāo)
     var y = 0;//節(jié)點(diǎn)的y坐標(biāo)

     var m = false; //標(biāo)識(shí)節(jié)點(diǎn)是否可移動(dòng)
     var r = false; //標(biāo)識(shí)節(jié)點(diǎn)是否能夠建立聯(lián)系

     var name = ""; //節(jié)點(diǎn)的名稱

     //================================ 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的時(shí)候Node對(duì)象根本就無(wú)法傳遞,而導(dǎo)致這個(gè)問(wèn)題的原因竟然是我沒(méi)有"自由的編寫Javascript"!其實(shí)問(wèn)題就出在doStructXML 方法上,作者在這里有意的"避開(kāi)"了這個(gè)問(wèn)題,所以在傳遞Node的時(shí)候?qū)τ谄渌接械姆椒˙uffalo是根本就不考慮的,F(xiàn)AINT!

    原先

     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;
     }

     

    總結(jié)

    1。Javascript的編寫是否應(yīng)該遵守一定的規(guī)范,其實(shí)屬于程序員自身休養(yǎng)的問(wèn)題,但我還是覺(jué)得復(fù)用JAVA的編碼規(guī)范不是壞事情!

    2。時(shí)刻記住Buffalo是建立在burlap協(xié)議的基礎(chǔ)上的,我們應(yīng)該把注意力放在burlap上而不僅僅只是Buffalo!

    主站蜘蛛池模板: 日韩免费高清大片在线| 成年女人男人免费视频播放| 亚洲第一二三四区| 免费黄色app网站| 美女巨胸喷奶水视频www免费| 精品亚洲麻豆1区2区3区| 免费看大美女大黄大色| 99精品免费视品| 国产精品亚洲综合久久| 国产成A人亚洲精V品无码| 亚洲第一成年免费网站| av片在线观看永久免费| 亚洲中文久久精品无码1| 久久亚洲色一区二区三区| 亚洲娇小性色xxxx| 亚洲色偷拍区另类无码专区| 亚洲AV无码国产剧情| 亚洲精品无码精品mV在线观看| 成人影片麻豆国产影片免费观看| 国产福利免费视频| 亚洲色成人网站WWW永久四虎| 亚洲国产精品无码久久一区二区| 免费观看一级毛片| 最近中文字幕大全免费视频| 免费一区二区无码视频在线播放 | 中文字幕在线免费观看视频| 亚洲国产日韩综合久久精品| 亚洲高清专区日韩精品| 免费一级毛片在播放视频| 国产人成免费视频网站| 永久在线观看免费视频 | 91免费国产在线观看| 国产成人精品免费大全| 风间由美在线亚洲一区| 亚洲成a人片在线网站| 成年女人毛片免费视频| 久久ww精品w免费人成| 久久成人永久免费播放| 黄色网址大全免费| 亚洲人成色777777老人头| 亚洲国产精品一区二区九九|