2013-01-10 82 views
2

在我寫的桌面html5應用程序中,我總是使用jquery,儘管我正在編寫移動html5應用程序,而且我想知道是否應該使用jquery。更快使用jquery或不使用jquery?

首先,我對選擇器很好奇。我已經做了jsfiddle的實驗,並測試了$('#item')和document.getElementById('item')之間的速度差異。統計我已經得出結論,$('#item')比document.getElementById慢。出於這個原因,我想完全切換到寫我的代碼,而無需jQuery的,但我讀到這裏就這一問題:

What's the difference between `on` and `live` or `bind`?

,當涉及到結合,使用jQuery的。對()方法是非常有效的。 jQuery的.on()方法比addEventListener()更快嗎?那麼如果我不斷地添加和刪除這個div的倍數:

<div class="item"></div> 

到DOM。在普通的JavaScript中,每當我添加一個新的div與類的項目,我不得不重新綁定新的div,但與.on()它自動爲我做。這是否更有效率?

+1

爲什麼性能是您考慮的唯一標準? – delnan

+9

這是**過早優化的一個很好的例子。**移動設備上的jQuery不一定是個問題;實際上整個面向移動的框架都建立在它的基礎之上。 – Pointy

+3

運行測試並找出自己。 jsperf是一個很好的資源。 – epascarello

回答

3

是jQuery的。對()方法比快的addEventListener()?

.on()根據.event.add()定義,其使用addEventListener。一方面,由於參數檢查和管理的開銷,這些函數比直接調用addEventListener要慢。另一方面,.event.add()確保儘可能避免對addEventListener的呼叫。

在您的具體示例中(添加項目,綁定事件處理程序,刪除項目),我期望jQuery執行速度較慢,因爲.event.add()的成本大於它的好處。但是,通常比衡量要好。

還要記住,jQuery的目標是非常便攜。例如,它包含a workaround for a Firefox event dispatch bug。它可能不值得你的開發時間來測試和規避自己的瀏覽器錯誤。