AJAX是web20的基石,現在網上流行幾種開源的AJAX架構,比如:jQuery,Mootools,Dojo,Ext JS等等,那麼我們到底在什麼情況下該使用那個架構?以下是一組摘抄的資料:
Ajaxian在2007年底對Ajax工具進行了調查,部分調查結果見下表(其中數字為調查者使用該工具的百分比,詳細的請參見網頁):http://ajaxian.com/archives/2007-ajax-tools-usage-survey-results
Prototype |
jQuery |
Ext |
Script.aculo.us |
Mootools |
YUI |
JSON |
Dojo |
Backbase |
34.1% |
29.3% |
22.5% |
22.3% |
14.3% |
13% |
12.9% |
11.8% |
8.3% |
其中Prototype使用率最高,很大程度上是因為它是最早成熟的架構,很多以前在項目中採用,所以現在一直在用
讓我們來看看選擇AJAX架構的基礎:
你的項目需求(即你需要哪些特性,例如是否要求做出精美的介面、特效或其它功能)
是否支援A等級的瀏覽器(IE, Firefox等)?
文檔的品質:是否完善(包含教程,API,程式碼範例等)
架構的可擴充性如何?為架構寫外掛程式容易嗎?
你是否喜歡它的API的風格?
能大多程度上統一你的JavaScript代碼的風格?
架構大小(太大的架構導致使用者下載時間的延長)
架構是否強迫你改變寫HTML的方式(Dojo就是這樣)?
代碼執行速度:效能如何?
代碼是否為模組化(Mootools為高度模組化)?代碼可重用性如何?
一、jQuery
首頁:http://jquery.com/
設計思想
簡潔的思想:幾乎所有操作都是以選擇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。
使用jQuery的網站:http://docs.jquery.com/Sites_Using_jQuery
核心的Team Dev和核心人員:John Resig等。
簡潔和簡短的文法,容易記。
可擴充性:有大量使用者開發的外掛程式可供使用(http://jquery.com/plugins/)
jQuery UI(http://jquery.com/plugins/,基於jQuery,但和核心的jQuery是獨立的),不斷髮展中。
友好和活躍的社區:google groups: http://docs.jquery.com/Discussion
事件處理有很多方便的方法,如click,而不是單一的addEvent之類的。
缺點
由於設計思想是追求高效和簡潔,沒有物件導向的擴充。設計思路和Mootools不一樣。
CSS Selector的速度稍微有些慢(但是現在速度已經大幅提高)