基于XML的洎異頭步筿JavaScript,簡稱AJAX,是當前Web創新(稱為Web2.0)中的一個王冠。感謝組成AJAX的各種技術,Web應用的交互如Flickr, Backpack和Google在這方面已經有質的飛躍。這個術語源自描述從基于網頁的Web應用到基于數據的應用的轉換。在基于數據的應用中,用戶需求的數據如聯系人列表,可以從獨立于實際網頁的服務端取得并且可以被動態地寫入網頁中,給緩慢的Web應用體驗著色使之像桌面應用一樣。
Ajax并不是一種新技術,而是整合了JavaScript、Xml、CSS等已有技術。雖然大部分開發人員在過去使用過XMLHttp或者使用Iframe來加載數據,但僅到現在我們才看到傳統的開發人員和公司開始采用這些技術。就像新的編程語言或模型伴隨著更多的痛苦,開發人員需要學習新的技巧及如何最好利用這些新技術。
AJAX模式
許多重要的技術和AJAX開發模式可以從現有的知識中獲取。例如,在一個發送請求到服務端的應用中,必須包含請求順序、優先級、超時響應、錯誤處理及回調,其中許多元素已經在Web服務中包含了,就像現在的SOA。AJAX開發人員擁有一個完整的系統架構知識。同時,隨著技術的成熟還會有許多地方需要改進,特別是UI部分的易用性。
AJAX開發與傳統的CS開發有很大的不同。這些不同引入了新的編程問題,最大的問題在于易用性。由于AJAX依賴瀏覽器的JavaScript和XML,瀏覽器的兼容性和支持的標準也變得和JavaScript的運行時性能一樣重要了。這些問題中的大部分來源于瀏覽器、服務器和技術的組合,因此必須理解如何才能最好的使用這些技術。
綜合各種變化的技術和強耦合的客戶服務端環境,AJAX提出了一種新的開發方式。AJAX開發人員必須理解傳統的MVC架構,這限制了應用層次之間的邊界。同時,開發人員還需要考慮CS環境的外部和使用AJAX技術來重定型MVC邊界。最重要的是,AJAX開發人員必須禁止以頁面集合的方式來考慮Web應用而需要將其認為是單個頁面。一旦UI設計與服務架構之間的范圍被嚴格區分開來后,開發人員就需要更新和變化的技術集合了。
Dojo
Dojo是最老的框架之一,于2004年9月開始開發。這個項目的目標是建立充分利用XHR的DHTML工具包,并把重心放在可用性問題上。Dojo只有幾個文件,不用處理XHR的建立,只需調用bind方法,并傳入想調用的URL和回調方法即可。就這么簡單。還可以使用bind方法來提交整個表單。
Dojo有一個特性使它獨樹一幟,這就是它支持向后和向前按鈕。盡管這個特性不一定在每個瀏覽器上都能用(遺憾的是,Safari就是一個異類),但你確實可以注冊一個回調方法,在用戶點擊了向后按鈕或向前按鈕時觸發這個方法。Dojo還提供了changeURL標記,力圖解決使用Ajax所固有的書簽問題。
Dojo看上去是相對成熟的工具包之一,它把重點放在可用性上,這一點很不錯。Dojo表現得相當穩定,在它身后還有一些支撐力量。Dojo的郵件列表相當活躍,多看一些文檔可能更有幫助。
TIBET
你覺得Ajax最早是什么時候出現的?根據對此的解釋,也許會認為TIBET可能是現存最老的框架。根據文檔所述,TIBET小組從1997年就開始開發這個工具包,他們的目標是提供企業級Ajax支持。TIBET看上去不只是包裝了XMLHttpRequest對象,它還對Web服務和底層協議提供了支持,并且提供了Google、Amazon和許多其他常用服務的預置包裝器。
真正讓TIBET卓而不群的是,它有一個完全交互式的基于瀏覽器的IDE,這能大大簡化開發、調試和單元測試。
Flash/JavaScript集成包
在Ajax之前,Flash很是風行,很多Web網站都建立在Flash平臺上。那些曾對Flash狠下一番功夫的人不想完全放棄Flash,利用這個開源項目就能同時利用Ajax技術。這個工具包在所有主要瀏覽器上都能用,使得JavaScript能夠調用ActionScript,ActionScript也能調用JavaScript?梢詠砘貍鬟f大量對象,包括日期、串和數組。
Flash/JavaScript集成包的安裝涉及一些JavaScript文件,以及兩個用于Flash的庫函數。從頁面上調用ActionScript函數只需幾行代碼而已。有關的文檔相當少,不過,如果你想使用Ajax訪問Flash,這個工具包就很值得研究。
Google AJAXSLT
基于Google Maps的工作,Google AJAXSLT是使用XPath的XSL轉換(XSLT)的JavaScript實現。XSLT可以把XML文檔轉換為其他語言,如HTML。AJAXSLT允許使用JavaScript在瀏覽器上直接完成這些轉換。
Google AJAXSLT在所有主要瀏覽器上都能工作,它是在BSD許可證下發布的。這個工具包很小,包括幾個JavaScript文件,還有一些方便的測試頁。Google AJAXSLT不是十全十美的,不過,如果Google Suggest有所提示,我們希望Google AJAXSLT的缺點能很快解決。因為Google是最先使用Ajax的網站之一,我們會很有興致地看到在未來幾個月它還會有所增加。
libXmlRequest
libXmlRequest框架也是比較老的一個框架,早在2003年就已經發布了。這個框架包括一個JavaScript文件,它相當于XMLHttpRequest對象的一個包裝器,提供了兩個重載的請求函數:getXml和postXml。另外,它有一些處理緩沖池和緩存的屬性,還有一些工具函數處理常見的任務,如解析來自服務器的XML以及修改DOM。
這個工具包能在哪些瀏覽器上運行,這一點還不是很清楚,而且有關的文檔相當少。這個工具包版權歸其作者Stephen W. Cote所有,其中沒有提到許可問題。因此,只能用它幫助你產生靈感。
RSLite
RSLite是遠程腳本的一個實現,由Brent Ashley編寫。從技術上講,它沒有利用作為Ajax核心的XMLHttpRequest對象,但是得到了更廣泛的瀏覽器支持。如果你需要支持原來的瀏覽器,而這些瀏覽器不支持XMLHttpRequest對象,就可以試試RSLite。RSLite是相當輕量級的,已從2000年發展至今。
SACK
SACK(簡單Ajax代碼包)開發為一個瘦包裝器,包裝了XMLHttpRequest對象。其作者Gregory Wild-Smith認為,其他的許多框架太過復雜,而且做了許多本不該它們完成的任務。所以他創建了SACK來簡化Ajax的開發。SACK包括幾個可以簡化服務器調用的方法。比起具體創建適當的XMLHttpRequest對象實例來說,用更少的代碼就能向服務器發送數據,并處理響應。
SACK由一個JavaScript文件組成,其中包含很少的代碼。SACK底層軟件的發布得到了修改X11許可(也稱為MIT許可),與大多數開源項目一樣,它的文檔并不多,不過,入門肯定還是綽綽有余的。SACK的真正強大之處在于它的簡單性,如果你要找的是一個基本包裝器,可以試試SACK。
sarrisa
sarissa有一點是Ajax做不到的,它以一種獨立于瀏覽器的方式對XML API提供了包裝支持。利用這個框架,創建和使用XMLHttpRequest對象實在是小菜一碟(不用檢查瀏覽器,它已經為你處理好了)。另外,sarissa還對使用DOM提供了支持。類似于Google AJAXSLT,sarissa也支持XSLT,它模擬了IE上的Mozilla處理器。
sarissa只包括幾個類,在GPL協議下發布。Mozilla/Firefox和IE都充分支持sarissa,只在Opera、Konqueror和Safari瀏覽器上有些函數不能用。
XHConn
XHConn類似于SACK,它相當于XMLHttpRequest對象的一個簡單包裝器。你不用直接使用XMLHttpRequest對象,只需首先啟動一個XHConn實例,與使用XHR同樣的方法加以處理。也就是說,無需瀏覽器檢查,并提供了一種簡單的方法來確定瀏覽器是否支持XHR(這對于需要妥善降級的網站尤其方便)。
XHConn在Safari、IE、Mozilla、Firefox和Opera上都能工作。類似于大多數Ajax框架,這是一個開源實現,在Creative Commons License協議下發布。XHConn是一個代碼不多的文件,不過它確實做到了該做的事情——簡化Ajax。
jquery
設計思想
簡潔的思想:幾乎所有操作都是以選擇DOM元素(有強大的Selector)開始,然后是對其的操作(Chaining等特性)。
優點
小,壓縮后代碼只有20多k(無壓縮代碼94k)。
Selector和DOM操作的方便:jQuery的Selector與mootools的Element.Selectors.js比較,CSS Selector, XPath Selector(1.2后已刪除)
Chaining:總是返回一個jQuery對象,可以連續操作。
文檔的完整,易用性(每個API都有完整的例子,這是其它框架現在不能比的),而且網上還有很多其它的文檔,書籍。
應用的廣泛,包括google code也使用了jQuery。