jquery歷經了多個版本的更新,版本上的比較貌似沒什麼必要性,一般來說新的版本會比舊的版本各方面都略有提公升,但由於新版中增加了各種新的功能,難免會引起bug的發生。評估乙個版本是否適合當前開發場景使用,通過多幾方面來衡量比較靠譜。以下我選用業界中比較穩定兩個jquery來進行對比,它們分別是1.4.2版本以及1.7.1版本來 。
1. 效能上的分析
1.1頻寬比較
1.4.2體積為71k,1.7.1體積為92k,壓縮後的體積相差無幾,現金的網路情況可忽視21k的差距。
1.2各瀏覽器上的效能比較
本次效能測試並沒有覆蓋所有的瀏覽器,只選用當前比較流行的幾個版本,包括了:ie6、ie8、ff11、chrome 18
測試用例:
在1秒裡迴圈執行以下測試用例
get - class 1.4.2 var item = $142(".buttonref");其執行結果就不一一顯示出來,感興趣的童鞋們可以到get class1.7.1 var item = $171(".buttonref");
context-class 1.4.2 var item = $142(".buttonref", context42);
context-class 1.7.1 var item = $171(".buttonref", context71);
find-class 1.4.2 var item = context42.find(".buttonref");
find-class 1.7.1 var item = conttext71.find(".buttonref");
具體檢視各瀏覽器的效能比較。
簡略彙總了各瀏覽器的資料:單位:(ops/sec)
總的來說, jquery1.7.1 除了在 ie6 上效能沒太大的差別以外,在其它三個瀏覽器均有較大效能的提公升。
2.穩定性分析
js 穩定性,起碼保證瀏覽器在執行 jquery
的時候不會奔潰,同時我們從其發布策略以及其下個版本有沒重大 bug
修復來來衡量哪個版本比較穩定。
首先看看兩個版本各自發布的時間,同時它們各自跟下個版本的發布時間間距。
從發布時間間距和更改日誌來說, 1.4.2jquery 1.4.2 posted february 19th, 2010 by john resig
jquery 1.4.3 posted october 16th, 2010 by john resig
changelog :
jquery 1.7.1 posted november 3rd, 2011 by dmethvin
jquery 1.7.2 posted march 21st, 2012 by dmethvin
changelog:
版本更穩定點。
3.功能上分析
1.7.1新增的方法
removedata([name|list]) (支援以陣列為引數的批量操作)
屬性:(新增)
prop(name|pro|key,val|fn)
removeprop(name)
選擇器:(新增)
focus1.6+
篩選:(過載了方法)
is(expr|obj|ele|fn)1.6*
closest(expr,[con]|obj|ele)1.6*
nextuntil([exp|ele][,fil])1.6*
parentsuntil([exp|ele][,fil])1.6*
prevuntil([exp|ele][,fil])1.6*
事件:(新增)
on(eve,[sel],[data],fn)1.7+
off(eve,[sel],[fn])1.7+
delegate(sel,[type],[data],fn)
undelegate([sel,[type],fn])1.6*
deferred:
新增了整個模組
工具:(過載了方法)
$.map(arr|obj,callback)1.6*
總的來說, jq1.7.2
過載了不少方法,也新增了一些方法,但對於我們日常開發來說都不是太常用,當然功能更多我們有更多的選擇,不過相對來說跟 jq1.4.2
沒有太多的優越性。
4.可擴充套件性、相容性分析
由於 jquery
的版本都是不向後相容的,導致了基於 jquery
開發的外掛程式相容性有問題,當新版本的 jquery
推出後,如果開發想公升級的話,要看外掛程式是否支援。通常情況下,在最新版 jquery
版本下,現有外掛程式可能無法正常使用。開發者使用的外掛程式越多,這種情況出現概率越高。
同時,由於 jquery1.4.2
版本發布時間比較早,基於這版本開發的外掛程式數量龐大,而對應版本的開發社群相當活躍,很多詭異的問題,網上都有對應的解決方案。
從可擴充套件性來分析吧,無論是 1.7.1
還是 1.4.2
留給開發擴充套件的方法只有兩個,分別是 jquery.extend
和 jquery.fn.extend
,一種是新增靜態屬性和方法、一種是物件新增屬性和方法,擴充套件方式比較簡單,經歷了多個版本,擴充套件方式都一致,因此在擴充套件性上面沒什麼可比較的。
5.結論
綜上所述, jquery1.7.1
的版本在多數瀏覽器上的效能表現無疑比 jquery1.4.2
更好,而穩定性和相容性方面 jquery1.4.2
更出色點,其它地方基本沒什麼差距。
從我們目前前端開發情況來說吧,引用到第三方的擴充套件庫相對來說比較少,而 1.4.2
的版本是當前最好的選擇。
在ubuntu上安裝最新穩定版本的node及npm
背景通過ubuntu官方apt安裝工具安裝的node是最新lts版本的,而本人是個有點強迫症的人,喜歡追求新的東西,也就是想方設法想要去安裝最新版本的node,所以本文也就產生了,附上ubuntu安裝node和npm的命令列命令 sudo apt install nodejs legacy sudo...
在ubuntu上安裝最新穩定版本的node及npm
背景 通過ubuntu官方apt安裝工具安裝的node是最新lts版本的,而本人是個有點強迫症的人,喜歡追求新的東西,也就是想方設法想要去安裝最新版本的node,所以本文也就產生了,附上ubuntu安裝node和npm的命令列命令 sudo apt install nodejs legacy sud...
在ubuntu上安裝最新穩定版本的node及npm
背景 通過ubuntu官方apt安裝工具安裝的node是最新lts版本的,而本人是個有點強迫症的人,喜歡追求新的東西,也就是想方設法想要去安裝最新版本的node,所以本文也就產生了,附上ubuntu安裝node和npm的命令列命令 sudo apt install nodejs legacy sud...