如果采取純Ajax的方式,類似于Echo2的構造,不過這樣對于Session可能是一個負擔,同時可能會造成服務端的擁堵。不過使用純Ajax有個好處,就是js只需要裝載一次就行了。而如果使用各個不同的頁面方式,則需要多次裝載ext的js文件,這對于網絡也是一個壓力。
不過創建的初衷,此框架主要還是使用于內部網,這樣對于性能方面的擔心可以略過了。
設計流程如下:
類似于Jsf的請求流程,提供Lifecycle,基本上也就五個生命周期,apply request,process validators,update model,invokeAction,render ajax。
先不考慮其他的生命周期,先來處理render ajax部分。基本構思還是以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,主要的執行js腳本
content用于創建相應的html
remove相應的刪除js腳本
為什么需要增加remove而不是把所有的腳本都放在script中。
這是由于整個處理都在一個頁面中,為了能按照順序執行相應的腳本,remove的腳本需要優先執行,當兩個組件不停的切換的時候。
client 對于腳本的解析流程如下:
首先分批裝載js url
當所有的js裝載完成后
執行remove 腳本
遍歷content,增加相應的html node
執行script腳本。
對于頁面的生成,基本上沒有什么問題。
只是如果采用這種方式,可能目前來說只能依賴于ext這個框架,對于服務端的靈活性也就大打折扣,不過既然是為了ext而做的,那也就無所謂了。
不知道各位對這種生成方式有什么不同意見,期待討論。