super

          DOJO.widget的性能問題

          對DOJO基本上算是文盲,只是項目中需要一些特效頁面,在網上找了找,感覺DOJO做的不錯,就拿過來用了,不過感覺性能很不好,頁面刷新明顯遲鈍

          ???我的頁面上大概有10幾個DOJO,刷一次頁面僅僅因為DOJO的widget的初始化的問題就要5-6秒鐘,讀了一下DOJO的代碼,只要的時間都花費在dojo.hostenv.makeWidgets這個方法中,本人的js水平比較低,基本上改不了DOJO的代碼,不過在這個方法中卻找到了一個稍微提高些性能的辦法,這就是 djConfig.searchIds的使用。

          dojo.hostenv.makeWidgets = function(){
          ?// you can put searchIds in djConfig and dojo.hostenv at the moment
          ?// we should probably eventually move to one or the other
          ?var sids = [];
          ?if(djConfig.searchIds && djConfig.searchIds.length > 0) {
          ??sids = sids.concat(djConfig.searchIds);
          ?}
          ?if(dojo.hostenv.searchIds && dojo.hostenv.searchIds.length > 0) {
          ??sids = sids.concat(dojo.hostenv.searchIds);
          ?}

          ?if((djConfig.parseWidgets)||(sids.length > 0)){
          ??if(dojo.evalObjPath("dojo.widget.Parse")){
          ???// we must do this on a delay to avoid:
          ???//?http://www.shaftek.org/blog/archives/000212.html
          ???// IE is such a tremendous peice of shit.
          ????var parser = new dojo.xml.Parse();
          ????if(sids.length > 0){
          ?????for(var x=0; x<sids.length; x++){
          ??????var tmpNode = document.getElementById(sids[x]);
          ??????if(!tmpNode){ continue; }
          ??????var frag = parser.parseElement(tmpNode, null, true);
          ??????dojo.widget.getParser().createComponents(frag);
          ?????}
          ????}else if(djConfig.parseWidgets){
          ?????var frag? = parser.parseElement(document.getElementsByTagName("body")[0] || document.body, null, true);
          ?????dojo.widget.getParser().createComponents(frag);
          ????}
          ??}
          ?}
          }

          具體使用方法就是在自己的頁面上把所有的dojo的widget都要定義ID,類似這樣

          <input id="queryStr_0" name="queryStr_0" dojoType="ComboBox" style="width:280px;" autocomplete="false" >


          然后加上這樣一段js
          <script language=javascript>
          ?djConfig.searchIds=['queryStr_0','queryStr_1','queryStr_2'];
          </script>
          這里的'queryStr_0'之類的就是你的widget的ID,這樣對于我的10幾個widget的頁面,速度基本上會快上1-2倍。


          posted on 2006-12-12 17:46 王衛華 閱讀(1432) 評論(1)  編輯  收藏

          Feedback

          # re: DOJO.widget的性能問題 2007-07-04 17:49 匿名

          其實并不是遲鈍,而是,當dojo第一次加載的時候在渲染它的信息,然后把一些數據緩存,當你再次訪問的時候速度就會好一些  回復  更多評論   



          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 昔阳县| 兴宁市| 栾城县| 瑞金市| 遂溪县| 登封市| 汝南县| 同德县| 金寨县| 琼结县| 新竹市| 台安县| 阿拉善左旗| 海口市| 望谟县| 峨边| 盱眙县| 始兴县| 威信县| 唐河县| 虞城县| 繁昌县| 芜湖县| 定边县| 河池市| 上栗县| 柯坪县| 卫辉市| 石林| 兴化市| 辛集市| 凌云县| 深州市| 常德市| 鹿泉市| 海盐县| 鄄城县| 琼中| 景宁| 高碑店市| 柳河县|