如果采取純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>
<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而做的,那也就無所謂了。
不知道各位對這種生成方式有什么不同意見,期待討論。