jQuery讓開發者戀戀不舍的秘密
今年年初,jQuery發布了1.4版本,代碼也從googlecode上遷移到了github,在這個版本中,jQuery有相當多的改進與功能更新,它不僅包含了很多新的特性,更在性能優化方面下了很大功夫。
jQuery是本人接觸的***個JavaScript類庫,俗話說初戀總是讓人難以忘記。一年以前,這種難以忘記僅僅是一種純感覺,說不出來具體原因。從純功能上說,jQuery并沒有特別出色的地方。究竟是什么讓JavaScript開發者如此戀戀不舍呢?
51CTO推薦專題:jQuery從入門到精通
在搭建taskspeed,檢查jQuery的測試代碼時,突然明曉了一個也許大家都已知道的秘密:jQuery最出色最讓人戀戀不舍的是它的API設計。
比如dom-style的api, YUI3和MooTools等框架采用的是傳統方式:
- el.setStyle(prop, val);
- el.getStyle(prop);
- el.setStyles({ propA: valA, propB: valB });
- el.getStyles(propA, propB); // MooTools 支持
在jQuery里,一個CSS方法全部搞定:
- el.css(prop); // 表示 getStyle
- el.css(prop, val); // 表示 setStyle
- el.css({ propA: valA, propB: valB }); // 表示 setStyles
- el.css(prop, func); // func 是一個返回 val 值的函數
對比以上兩種API設計,乍一看jQuery顯得不那么“標準”。但從可記憶性和靈活性上講,我覺得jQuery的設計都更人性化。jQuery的API還符合學習上的漸進式思維:先學會最簡單的情況el.css(prop), 再了解到還可以有兩個參數,接著發現參數可以是map, 更進一步發現val還可以是一個函數。
func參數甚至能帶給學習者一種驚喜:居然還可以這樣用!jQuery把一種漸進和愉悅帶進了學習和使用的過程中,實在漂亮!YUI3的API缺少這種樂趣。查詢jQuery的API, 會有一種探尋秘密的尋寶感覺。YUI的文檔查詢則讓人感覺就是份工作,有點boring。
和YUI2 相比,YUI3的API做了些改變。在YUI2里,YAHOO.util.Dom的方法名,嚴格以動詞開頭,雖然有些方法名長點,但總體規律性很強,可記憶性還不錯。在 YUI3 里,則出現了byId, elementByAxis等方式命名的方法。純粹為了省幾個字符?這種不一致性很納悶。還有一些以名詞命名的方法:ancestor, docHeight, 乍一看很難以為是方法。
YUI3的API整體還是挺不錯的,比如Node的方法命名,就非常嚴謹。ancestor也是為了對應next, prev等命名。也就是說:Y.Dom其實已變成了內部API, 不鼓勵用戶直接調用。
但是不知為什么,本人還是覺得jQuery的API設計高出一個層次,套用一句流行話就是:jQuery API的用戶體驗更好!
【編輯推薦】