閑人野居
          好好學(xué)習(xí),天天向上
          posts - 57,  comments - 137,  trackbacks - 0
              研究了ext很久了,一直想為ext直接封裝一個服務(wù)端組件。考慮到ext組件的構(gòu)建都是需要使用js來完成,那么服務(wù)端生成的代碼也就是js而不是html。
              如果采取純Ajax的方式,類似于Echo2的構(gòu)造,不過這樣對于Session可能是一個負擔(dān),同時可能會造成服務(wù)端的擁堵。不過使用純Ajax有個好處,就是js只需要裝載一次就行了。而如果使用各個不同的頁面方式,則需要多次裝載ext的js文件,這對于網(wǎng)絡(luò)也是一個壓力。
              不過創(chuàng)建的初衷,此框架主要還是使用于內(nèi)部網(wǎng),這樣對于性能方面的擔(dān)心可以略過了。
              設(shè)計流程如下:
              類似于Jsf的請求流程,提供Lifecycle,基本上也就五個生命周期,apply request,process validators,update model,invokeAction,render ajax。
              先不考慮其他的生命周期,先來處理render ajax部分。基本構(gòu)思還是以render xml為主,主要的格式如下:
              
          <message xmlns="http://www.esoft.org/servermessage">
            <lib>
              <
          js url="widgets/ext-component"/>
            </
          lib>
            <script>Ext.QuickTips.init();</script>
            <content cid="W9"><div id="W39"/></content>
            <remove>Ext.get('W29').remove();</remove>
          </message>

          lib 中主要用來裝載ext的各個組件js,這樣不需要一次裝載。
          script,主要的執(zhí)行js腳本
          content用于創(chuàng)建相應(yīng)的html
          remove相應(yīng)的刪除js腳本

          為什么需要增加remove而不是把所有的腳本都放在script中。
          這是由于整個處理都在一個頁面中,為了能按照順序執(zhí)行相應(yīng)的腳本,remove的腳本需要優(yōu)先執(zhí)行,當(dāng)兩個組件不停的切換的時候。

          client 對于腳本的解析流程如下:
          首先分批裝載js url
          當(dāng)所有的js裝載完成后
          執(zhí)行remove 腳本
          遍歷content,增加相應(yīng)的html node
          執(zhí)行script腳本。

          對于頁面的生成,基本上沒有什么問題。
          只是如果采用這種方式,可能目前來說只能依賴于ext這個框架,對于服務(wù)端的靈活性也就大打折扣,不過既然是為了ext而做的,那也就無所謂了。

          不知道各位對這種生成方式有什么不同意見,期待討論。
          posted on 2008-01-02 18:36 布衣郎 閱讀(3459) 評論(4)  編輯  收藏 所屬分類: web view技術(shù)

          FeedBack:
          # re: 關(guān)于服務(wù)端生成js的構(gòu)思
          2008-01-02 18:46 | gembin
          如何動態(tài)生成JS并在客戶端加載?

          似乎第一次加載時往往有些JS不能被加載   回復(fù)  更多評論
            
          # re: 關(guān)于服務(wù)端生成js的構(gòu)思[未登錄]
          2008-01-02 21:27 | diego
          路過

          http://5dwall.cn
          國內(nèi)最好的壁紙論壇  回復(fù)  更多評論
            
          # re: 關(guān)于服務(wù)端生成js的構(gòu)思
          2008-01-07 14:37 | 良少
          如果是純JS,可以在客戶端使用Eval()方法讓JS執(zhí)行。
          但是,eval只能執(zhí)行純JS,如果包括html代碼,就執(zhí)行不了。
          樓主的想法是可行的。  回復(fù)  更多評論
            
          # re: 關(guān)于服務(wù)端生成js的構(gòu)思
          2008-01-08 13:42 | 布衣郎
          可行性基本上沒有什么問題,只是不知道效率方面,以及擴展方面有什么不妥。  回復(fù)  更多評論
            

          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(12)

          隨筆分類(59)

          隨筆檔案(57)

          blog

          java

          uml

          搜索

          •  

          積分與排名

          • 積分 - 358221
          • 排名 - 156

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 清丰县| 金门县| 柘荣县| 临漳县| 永寿县| 舟曲县| 松桃| 青州市| 白朗县| 抚顺县| 宜州市| 边坝县| 梨树县| 海丰县| 通河县| 海门市| 福州市| 高密市| 安徽省| 宿松县| 永修县| 武宁县| 蓬莱市| 呼和浩特市| 宜城市| 博爱县| 东阳市| 准格尔旗| 新宾| 札达县| 会理县| 诸城市| 彰化县| 海阳市| 涿鹿县| 泗水县| 涞源县| 建平县| 台山市| 遵义市| 扶余县|