views: 1651 times


繼上一篇之後,繼續來發發牢騷(笑)。
之前提到過的 XAJAX 與 Smarty 的架構部份,當然這些做法是因人而異,每個人有每個人喜歡的方式,而我在這邊提供我的方式,各位就參考參考吧。
XAJAX 下載後,它的壓縮檔內容大概是這樣,這邊是以 0.2.5 stable 版本為例子,

而我們在這邊需要的是,xajax, lib, xajax_js 這三個資料夾中的檔案。共計有,

圖中的 homedirectory 就是家目錄(root),其底下的 class 則是放置所有你能夠運用的 Class libraries 檔案。而,XAJAX 就是其中一支。接著 include 則是放置在檔案中需要呼叫的函式,是用來啟動所需要的 Class 物件的。
目錄中的配置如下,
這是一支專門用來註冊我們所使用到的 XAJAX 的程序,它可以被放在任何的檔案裡面,目的就只有一個,宣告已經定義好的 XAJAX 函式,並啟動它,且會返回 XAJAX 所需要的 Javascript 碼 (留意到 $xajax->printJavascript 了嗎?)。
接著是 xajax.server.myfunction.php,它是 XAJAX 在 Servlet 的工作程序,內容是,
這個檔案,是做一個非常簡單的動作(就類似 Hollo world),作為從 Servlet 返回到 Client 的一個程序。
最後,我們在 homedirectory 寫一支 php 檔案來呼叫它,內容如下,
執行的結果如下,

以上,這就是簡易的 XAJAX 的應用。
再來談到 mootools。還不認識的人可以看這一篇介紹,跟這一篇應用,基本上是一個非常強大的 AJAX 套件,當然他也有屬於他自己的 HttpXMLRequest 方式及其應用,不過這裡不談那個部份,畢竟這裏有 XAJAX 可以使用,也不需要你去多花心力搞定 Servlet 與 Client 之間的關係。
在應用上,mootools 有個好處,可以控管這些程序在執行上的流程。太過於詳細的 prototype 這裡就不贅述了,說實在我自己要摸清楚可能都還得花很久的時間(笑),大抵上就看可以應用的部分應該就夠了。
重點是〝什麼時候產生回應(response)〞?
XAJAX 除了 addAlert 之外,另外有一個方法叫做 addScript,可以讓你呼叫 Client 端的 Javascript,那麼,我們就用這個地方來控制所產生的回應問題。首先是 Events,當一個回應(response)被送進程序的時候,我們由一個自訂的 Events 去接收它,或者是,我們由一個自訂的 prototype 去接收這個回應。
簡單的例子是這樣,
最快的方式是 delay,除了純回應(上述例子)之外,也可能回應是一串 HTML Code,這時候擁有 delay 的 prototype 就比較方便,可以不斷的延遲將資訊寫入 Client 的頁面上,而不至於造成回應擁塞(over response)。什麼時候會造成這樣的結果?當你大量的讀取資料庫,並將 100 筆資料作 HTML Code 處理後再輸出給 Client,這時候就會發生瀏覽器大量 Javascript 資訊的寫入,多半會造成瀏覽器沒有回應的狀況。
當然,上述的例子其實還是無法防止 Servlet 大量的對 Client 送出 Response,這時候你得對你的 XAJAX 在 Servlet 上的函式動手腳,因為 XAJAX 在 Servlet 端有極大的主控權,所以當資料量異常大量的時候,必須要考量到的就是 Client 端的接收能力是否符合需求。舉個工作上的例子,請看圖,

套用 mootools 的排序功能的時候,

也許這不是一般使用者的 PC 能夠承受的範圍(我指的是非 power user)。
AJAX 固然是有一定的方便與好處,但是,一旦遇到大宗資料處理的時候,就失去了它小而巧,小而美的那種靈活與機動性了。固然,各位真正在應用的時候,是否也能多思考一下關於這方面的問題,當然,我自己也還在摸索,畢竟要符合大眾需求,也才是真正能夠讓大眾接受的一個服務啊。
好了,廢話那麼多就嫌囉唆了,上面那個檔案我打包在這裡,想服用的人請自便。
File download, XAJAX_modify_by_hina.zip
之前提到過的 XAJAX 與 Smarty 的架構部份,當然這些做法是因人而異,每個人有每個人喜歡的方式,而我在這邊提供我的方式,各位就參考參考吧。
XAJAX 下載後,它的壓縮檔內容大概是這樣,這邊是以 0.2.5 stable 版本為例子,

而我們在這邊需要的是,xajax, lib, xajax_js 這三個資料夾中的檔案。共計有,
- xajax 部分,
xajax.inc.php
xajaxCompress.php
xajaxResponse.inc.php - lib 部分,
activex_off.js - xajax_js 部分,
xajax.js
xajax_uncompressed.js

圖中的 homedirectory 就是家目錄(root),其底下的 class 則是放置所有你能夠運用的 Class libraries 檔案。而,XAJAX 就是其中一支。接著 include 則是放置在檔案中需要呼叫的函式,是用來啟動所需要的 Class 物件的。
目錄中的配置如下,
- class 部分,XAJAX 在此無檔案。
- xajax 部分,
xajax.inc.php
xajaxCompress.php
xajaxResponse.inc.php - xajax_js 部分,
xajax.js
xajax_uncompressed.js - include 部分,
global.func.inc.php
xajax.server.myfunction.php
這是一支專門用來註冊我們所使用到的 XAJAX 的程序,它可以被放在任何的檔案裡面,目的就只有一個,宣告已經定義好的 XAJAX 函式,並啟動它,且會返回 XAJAX 所需要的 Javascript 碼 (留意到 $xajax->printJavascript 了嗎?)。
接著是 xajax.server.myfunction.php,它是 XAJAX 在 Servlet 的工作程序,內容是,
這個檔案,是做一個非常簡單的動作(就類似 Hollo world),作為從 Servlet 返回到 Client 的一個程序。
最後,我們在 homedirectory 寫一支 php 檔案來呼叫它,內容如下,
執行的結果如下,

以上,這就是簡易的 XAJAX 的應用。
再來談到 mootools。還不認識的人可以看這一篇介紹,跟這一篇應用,基本上是一個非常強大的 AJAX 套件,當然他也有屬於他自己的 HttpXMLRequest 方式及其應用,不過這裡不談那個部份,畢竟這裏有 XAJAX 可以使用,也不需要你去多花心力搞定 Servlet 與 Client 之間的關係。
在應用上,mootools 有個好處,可以控管這些程序在執行上的流程。太過於詳細的 prototype 這裡就不贅述了,說實在我自己要摸清楚可能都還得花很久的時間(笑),大抵上就看可以應用的部分應該就夠了。
重點是〝什麼時候產生回應(response)〞?
XAJAX 除了 addAlert 之外,另外有一個方法叫做 addScript,可以讓你呼叫 Client 端的 Javascript,那麼,我們就用這個地方來控制所產生的回應問題。首先是 Events,當一個回應(response)被送進程序的時候,我們由一個自訂的 Events 去接收它,或者是,我們由一個自訂的 prototype 去接收這個回應。
簡單的例子是這樣,
最快的方式是 delay,除了純回應(上述例子)之外,也可能回應是一串 HTML Code,這時候擁有 delay 的 prototype 就比較方便,可以不斷的延遲將資訊寫入 Client 的頁面上,而不至於造成回應擁塞(over response)。什麼時候會造成這樣的結果?當你大量的讀取資料庫,並將 100 筆資料作 HTML Code 處理後再輸出給 Client,這時候就會發生瀏覽器大量 Javascript 資訊的寫入,多半會造成瀏覽器沒有回應的狀況。
當然,上述的例子其實還是無法防止 Servlet 大量的對 Client 送出 Response,這時候你得對你的 XAJAX 在 Servlet 上的函式動手腳,因為 XAJAX 在 Servlet 端有極大的主控權,所以當資料量異常大量的時候,必須要考量到的就是 Client 端的接收能力是否符合需求。舉個工作上的例子,請看圖,

套用 mootools 的排序功能的時候,

也許這不是一般使用者的 PC 能夠承受的範圍(我指的是非 power user)。
AJAX 固然是有一定的方便與好處,但是,一旦遇到大宗資料處理的時候,就失去了它小而巧,小而美的那種靈活與機動性了。固然,各位真正在應用的時候,是否也能多思考一下關於這方面的問題,當然,我自己也還在摸索,畢竟要符合大眾需求,也才是真正能夠讓大眾接受的一個服務啊。
好了,廢話那麼多就嫌囉唆了,上面那個檔案我打包在這裡,想服用的人請自便。
File download, XAJAX_modify_by_hina.zip
xajax_modify_by_hina.zip




Leave your greetings.
跟xajax官方網站上的範例比起來
2008/04/24 15:38 [ Permalink : Modify/Delete : Reply ]你的這個範例的程式架構 起碼複雜了三倍以上
很簡單的事卻迂迴了好幾個彎去完成
只是增加自己或他人日後維護程式的難度
可能會嚇跑不少對xajax的初學者喔
呵呵... 我知道官方的 example 很簡單明瞭啊 :P
2008/04/24 15:59 [ Permalink : Modify/Delete ]只是,對於維護上的事情來說
大概是自己的習慣所致,所以並不會覺得特別難維護
我只是將個別元件給切割開來而已啦
當然,現在的做法剛當時寫這一篇的時候又不太相同了
不過算是大同小異
畢竟,某些地方方便,就會造成其他地方不方便
魚與熊掌,不可兼得囉!
初學者當然是不建議這麼做啦
我是已經在有某些系統需求下才這麼做的
配合 smarty, 與自行開發的 ajax 的狀況下
元件切的越清楚,縱使有點複雜,對我而言還是好的 :P
畢竟,是個人使用習慣上的問題囉!