只是一些看法:
jQuery
jQuery其實創造了一個使用的使用習慣的典範,而且透過它為使用者解決了在html應用上最大的問題:相容性。所以只要透過jQuery來操作DOM,基本上不太會碰到瀏覽器相容性的問題。
缺點喔,其實比較在架構上,所以其實不太能稱呼它是一個框架。基本上要擴充jQuery很簡單,透過jQuery.extend/jQuery.fn.extend就可以,jQuery內部也是這樣做。不過這樣就讓jQuery變得有點像php,易於擴充,但是缺乏組織。另外,基本上它只有一種使用方法,你不能用jQuery來「擴充」自己現存的程式(ex. 繼承jQuery的某個功能),你只能使用jQuery以及擴充它。
另外一個架構上的問題是組織...jQuery在1.2.x版時,只有3000多行程式,但是到了1.7.2已經增加到近萬行,每次使用都要全部下載,它並沒有模組化的組織,所以唯一的最佳化方法就是minify加上gzip。
另外,jQuery所有動作都是從DOM出發,所以在沒有DOM的環境中,基本上完全沒用。(例如node.js,不過也有套件提供html parsing以及類似jQuery的操作方式)
ExtJS
有一段時間沒碰,不知道ExtJS目前的狀況,不過他們在node.js以及行動應用上也很有貢獻(不過我這裡不提)。
ExtJS提供了許多支援ajax的視覺化元件,而且功能完整強大(比jQuery UI好用,所以之前有拿它來做UI prototype)。不過因為功能強大完整,速度有時候會有點慢(幾年前的經驗,現在的瀏覽器速度快很多,應該不太會了)。
另外,ExtJS真的很複雜,基本上你只能用它現有的元件,要擴充跟改寫恐怕都有點困難。
YUI3
YUI3有很嚴謹的組織以及模組化的架構,讓他很有彈性。而且他建議的使用方式是把程式寫在callback函數裡面,這樣會讓你寫的東西有很好的隔離。如果是多人協做,甚至每個人只開發幾個widget,然後再組成複雜的應用,YUI3會是比jQuery好的選擇。
它也可以用類似jQuery的方式來使用,不過對於瀏覽器的支援程度跟jQuery比起來可能還是會稍微差一點。
...先上班去,有問題請再問吧。
開完會了來補充一下...
其實應該稍微跳脫一下,如果你需要的是一個web前端的開發框架,也許應該考慮:
上網隨便找了一個比較:
http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/
用這些框架,可以協助你用更好的方式組織前湍的軟體架構。這些要搭配jQuery應該也都沒太大問題。如果要把功能模組化,可以考慮利用require.js。你自己規劃好模組後,就可以用它依照相依性動態載入。(其實YUI3有內建類似的機制,所以我會覺得他在組織跟模組化上做的還不錯)
Framework 有所謂的功能導向,也就是說每一種 Framework 想要解決的問題都不見得相同。
jQuery 主要目的是為了解決瀏覽器上的差異,而 ExtJS 與 YUI 都是以 UI 為出發點 (YUI 後來則是包山包海了) 。
瀏覽器的差異一直以來是開發者的痛,所以當 jQuery 出現時,確實是擄獲了許多開發者的心。而且 jQuery 不斷地隨著瀏覽器進化,即使後來有許多替代方案出現,也很難憾動它的地位。
不過 jQuery 在 UI 上的發展就比較差強人意了,從一開始的 Interface 到後來的 jQuery UI ,在元件的豐富度上比其他 UI Framework 就顯得弱了點。
另外 Framework 的使用方式與擴充方式,也是影響 Framework 是否能夠流行的因素。 jQuery 以 CSS Selector 來操作 DOM 的做法,在它剛出現時可說是造成一股話題。再加上它的 plugin 機制開發容易,很快地大家都幫它開發出不少實用的擴充功能。 jQuery 的成功可以說不是偶然,它大大地改變了以往我們在開發 DHTML 時的舊思維;也讓主流的瀏覽器以它為參考,增加了很多新的特色。
其他還有很多類型的 Framework ,像是 MVC Framewok 、 HTML5 Game Framework 等等;這些 Framework 都是把很多有用的技術封裝起來,提供簡單易用的 API 讓我們呼叫。因此在選擇之前,一定要清楚自己要解決的是什麼問題,才能找出適合的 Framework 。
以 UI Framework 的角度來看 jQuery ,這主要是定位不同。
舉我看過的幾隻,
工具箱 DIY 型的,
使用者要自己搭配材料(dom)才能夠建出比較複雜的東西,
prototype 跟 jQuery 算是工具箱,早期前者算出來的比較早也很多支持者。
另外他們也提供一定程度的組裝,所以他算是工具箱,但是有其他人會出進階組裝包的,
只是使用者還是要自己作一定程度的管理,操作的對象是 dom。
dojo 算是有對 dom 操作工具,也有要作 widget 的野心但是他的開發有點囉唆,也是個早期元老。
YUI YUI2 之前過於強調架構導致可用性低落,這點跟 dojo 有一樣的問題。YUI 3 後雖然改善很多,但是比 widget 他強強不過 extjs 比操作性他又無法和 jQuery 已經有現成的函式海交鋒。不過他還是有一項很充裕的資源,有一整間的公司幫他作撐腰跟改善開發,所以在未來可能還市有機會再異軍突起。
extJS 這類是吃到飽型的,他不要你作 dom 的操作,他只要你作 widget 的組裝,
跳脫 html 設計的思維,而進入純粹的元件組裝。
你可以直接直接產生一個 grid 或一個 tab panel 。
但吃到飽就是會有很多假設跟難以客製的問題,他幫你處理好大部份的需求,
但是你也不能要求他太多,甚至你要改他還要先了解他。
顯然的,現在的潮流還是開發者希望掌握 dom 的多,所以 jQuery 蔚為主流,
但未來會不會有大一統的 widget 時代,就要看 widget 對滿足需求這件事還能再進化到什麼程度
node.js圈中幾位重量級人物也是Sensha Labs出來的...這些人Javascript超強
是不是比較差要看要做什麼跟什麼操作,
以對比 ExtJS 而言, jQuery 優點在於相對輕量跟大小,如果你載入 ext-all ,
光檔案就 1m ,你怎麼跟 jQuery 比載入速度跟使用者體驗。:P
如果你用了 ExtJs 全部的功能,或者退而求其次,有用到它 20% 的功能,
那基本上對你而言,他不比 jQuery 差沒錯。
但是如果你只拿 ExtJS 來做 show、hide、animcation ,
那它是不是比 jQuery 差,我想顯然是不言可喻吧。
評估 framework / lib 是一個浮動的標準,
你的需求跟他 framework 解決問題的事情越相近,你賺得就越多,
但另一個角度來講,他解決妳不需要的問題越多,你還是賠上那些管理的複雜度。
jQuery 在這件事情上聰明的點在於,讓他幾乎在所有人解決問題的要徑上,
而且相對於 ExtJS ,他並不作多餘的事情。
載入ext-all是偷懶的做法,早在2007年官方就有推出自製需要的Library功能,只是很少看到有人在用XD
如果用不到他的UI,也可以只載入ext-core
總結以上這兩點,不知道有回答您嗎?
最後再補一點,看jQuery的Document讓我覺得很痛苦(剛開始啦)
相對於大量使用物件導向"觀念"的ExtJS,則是讓我輕鬆許多
雖然很多人都說Ext不好學,但我卻不這麼認為
jQuery 為何會這麼紅?
主因之一,我的看法是他將跨瀏覽器 DOM 語法做到最簡化,同時也增加許多連綴(chian) 的功能,同時在 1.2初期,也是號稱最精簡最小化的瀏覽器套件庫。
簡單來說,就是因為 jQuery 的簡單,與防止錯誤發生,這是讓開發者或者是設計師願意嘗試進入 jQuery 的世界,最主要的原因。
jQuery 缺點,目前看到的許多優點,其實也是他的缺點,因為簡單,不會跳出太多錯誤資訊,因此就算抓到錯誤的 DOM,空的資料,或者是非常消耗資源的存取方式,可是初期開發者通常不會知道。
另外,jQuery 在多人合作的情況下,只單單依賴 jQuery 套件庫是難以團隊合作的,必需要建立在一定的『模式』底下才能解決。
框架問題
問題上所提到的其實都是單指 JavaScript 套件庫,如果你是需要一個好的框架 『JavaScript MVC, MVVM, MVP』,可以多去看看 Backbone,Ember, Knockout,這幾個框架都是基於不同的開發模式所開發初來的,這部份我涉獵比較少,就要麻煩你自行比較看看了。
框架資料參考:
http://emberjs.com/
http://knockoutjs.com/
http://documentcloud.github.com/backbone/
建議學jQuery吧,在台灣能找到的資源較豐富。
ExtJS有授權問題,還有檔案較肥大
不過若論功能面,我覺得ExtJS是比較強大的。
jQuery有的優點他都有,還另外附帶美美的UI
(不過其實jQuery我寫比較少,純粹用官方document所能看到的和實際寫過的經驗來比較)