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 王衛華 閱讀(1425) 評論(1)  編輯  收藏

          Feedback

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

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



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


          網站導航:
           
          主站蜘蛛池模板: 集安市| 荔浦县| 梅河口市| 永城市| 英吉沙县| 昌黎县| 枣强县| 阿拉善盟| 丰镇市| 萨迦县| 安康市| 登封市| 唐海县| 万源市| 阿克| 永城市| 大厂| 涪陵区| 忻州市| 元谋县| 稷山县| 赣州市| 云安县| 基隆市| 体育| 金山区| 胶州市| 崇阳县| 德庆县| 东丰县| 尚志市| 南皮县| 苍南县| 阜平县| 昔阳县| 雅安市| 莆田市| 台东市| 湖北省| 中超| 五华县|