iT邦幫忙

0

JavaScript的框架很多,請問jQuery有什麼強處或缺點嗎?

toykid 2012-04-12 17:26:4421337 瀏覽

我看了一下JavaScript的框架實在很多,也有很多很炫的,像是Ext.js或是YUI,想請問一下filano大大,jQuery這麼紅是有特別的原因嗎?

他比其他框架好或不好的地方在哪裡?

除了jQuery之外,filano大大還有推薦什麼JavaScript的框架嗎?

22
fillano
iT邦超人 1 級 ‧ 2012-04-13 08:33:55
最佳解答

只是一些看法:

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比起來可能還是會稍微差一點。

...先上班去,有問題請再問吧。

fillano iT邦超人 1 級 ‧ 2012-04-13 12:01:22 檢舉

開完會了來補充一下...

其實應該稍微跳脫一下,如果你需要的是一個web前端的開發框架,也許應該考慮:

  1. backbone.js
  2. JavascriptMVC
  3. PureMVC
    等等。

上網隨便找了一個比較:
http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/

用這些框架,可以協助你用更好的方式組織前湍的軟體架構。這些要搭配jQuery應該也都沒太大問題。如果要把功能模組化,可以考慮利用require.js。你自己規劃好模組後,就可以用它依照相依性動態載入。(其實YUI3有內建類似的機制,所以我會覺得他在組織跟模組化上做的還不錯)

fillano iT邦超人 1 級 ‧ 2012-04-13 12:59:01 檢舉
14
jaceju
iT邦新手 5 級 ‧ 2012-04-13 09:57:33

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 。

ExtJS(YUI不知)就沒有跨瀏覽器嗎?好像不是這樣吧。

jaceju iT邦新手 5 級 ‧ 2012-04-19 12:20:00 檢舉

我的回應裡應該是沒有說 ExtJS 沒有跨瀏覽器,不曉得是哪裡讓您誤會了 :D

jaceju iT邦新手 5 級 ‧ 2012-04-19 14:47:06 檢舉

另外自行更正, jQuery 確實不是 Framework ,應該是 Library 。

10
tony1223
iT邦新手 2 級 ‧ 2012-04-13 10:33:06

以 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 對滿足需求這件事還能再進化到什麼程度

看更多先前的回應...收起先前的回應...

ExtJS也可以做DOM的操作,而且絕對不比jQuery差,他的UI不過是吸引人的噱頭。

說是噱頭好像也不對,應該是強項之一。

fillano iT邦超人 1 級 ‧ 2012-04-19 11:41:06 檢舉

node.js圈中幾位重量級人物也是Sensha Labs出來的...這些人Javascript超強

tony1223 iT邦新手 2 級 ‧ 2012-04-19 14:42:18 檢舉

是不是比較差要看要做什麼跟什麼操作,
以對比 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不好學,但我卻不這麼認為

8
clonn
iT邦新手 3 級 ‧ 2012-04-13 13:29:14

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/

4
herb123456
iT邦新手 5 級 ‧ 2012-04-19 03:04:36

建議學jQuery吧,在台灣能找到的資源較豐富。
ExtJS有授權問題,還有檔案較肥大
不過若論功能面,我覺得ExtJS是比較強大的。
jQuery有的優點他都有,還另外附帶美美的UI
(不過其實jQuery我寫比較少,純粹用官方document所能看到的和實際寫過的經驗來比較)

yiying iT邦新手 1 級 ‧ 2013-03-19 10:36:58 檢舉

我也覺得jQuery很不錯,資源多跟好上手都是當初選擇寫jQuery的原因 XD

我要發表回答

立即登入回答