閑人野居
          好好學(xué)習(xí),天天向上
          posts - 57,  comments - 137,  trackbacks - 0
              研究了ext很久了,一直想為ext直接封裝一個(gè)服務(wù)端組件??紤]到ext組件的構(gòu)建都是需要使用js來(lái)完成,那么服務(wù)端生成的代碼也就是js而不是html。
              如果采取純Ajax的方式,類(lèi)似于Echo2的構(gòu)造,不過(guò)這樣對(duì)于Session可能是一個(gè)負(fù)擔(dān),同時(shí)可能會(huì)造成服務(wù)端的擁堵。不過(guò)使用純Ajax有個(gè)好處,就是js只需要裝載一次就行了。而如果使用各個(gè)不同的頁(yè)面方式,則需要多次裝載ext的js文件,這對(duì)于網(wǎng)絡(luò)也是一個(gè)壓力。
              不過(guò)創(chuàng)建的初衷,此框架主要還是使用于內(nèi)部網(wǎng),這樣對(duì)于性能方面的擔(dān)心可以略過(guò)了。
              設(shè)計(jì)流程如下:
              類(lèi)似于Jsf的請(qǐng)求流程,提供Lifecycle,基本上也就五個(gè)生命周期,apply request,process validators,update model,invokeAction,render ajax。
              先不考慮其他的生命周期,先來(lái)處理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 中主要用來(lái)裝載ext的各個(gè)組件js,這樣不需要一次裝載。
          script,主要的執(zhí)行js腳本
          content用于創(chuàng)建相應(yīng)的html
          remove相應(yīng)的刪除js腳本

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

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

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

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

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

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

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

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(12)

          隨筆分類(lèi)(59)

          隨筆檔案(57)

          blog

          java

          uml

          搜索

          •  

          積分與排名

          • 積分 - 357318
          • 排名 - 155

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 开原市| 淅川县| 齐河县| 福鼎市| 古交市| 丰城市| 蓝山县| 伊吾县| 从江县| 龙里县| 阳山县| 汉川市| 萍乡市| 鄂托克旗| 正宁县| 双柏县| 杭州市| 玛纳斯县| 海丰县| 通河县| 湘阴县| 尼勒克县| 尚志市| 花垣县| 三亚市| 久治县| 丰县| 始兴县| 湛江市| 中方县| 会东县| 景洪市| 安康市| 梧州市| 汝南县| 喀喇沁旗| 昌江| 德江县| 明溪县| 荃湾区| 遂平县|