2013-05-07 20 views

回答

7

jQuery是使用JavaScript構建的庫。越抽象你會得到的表現越少。例如,只需使用本機DOM方法選擇一個元素,將比使用jQuery做得更快。

所以這個問題並不是「找出哪一個更快」,你已經知道jQuery會變慢。這個問題更像是「值得的表現是否值得?」。是的,大多數情況下,這是因爲您在編寫代碼時節省的時間比您獲得的性能更有價值,而大部分時間都是可以忽略的。

另一個因素是你的香草JavaScript代碼的質量。 jQuery已經過多年的測試和維護,並且顯示。

+0

謝謝。正是我在尋找的答案。對於新手問題再次抱歉 – 2013-05-07 23:49:37

0

你的問題不應該是「我應該使用jQuery還是純JavaScript」而是「我應該使用哪個庫?」。沒有人應該用零代碼開始一個實質性項目,他們應該至少有一個強大的,經過測試的代碼集合,可以很容易地整理成一個庫或工具包。

一般庫的問題是它必須提供一般解決方案,因此爲什麼jQuery有4000行代碼,任何一個項目可能只需要幾百行。有些庫有更多的代碼行。如果你使用別人的庫,你經常會被綁定到他們的更新時間表,最終可能會使用需要不同版本庫的插件。

如果您擁有自己的圖書館,或者在您的工作區域開發和維護的圖書館,您可以獲得相同的代碼重用,並可以裁剪布料以適合該項目。 jQuery(和大多數通用庫)是單一的:它是全部或者全部,你不能只包含其中一部分(例如,你可能只想要一個好的函數)。你自己的庫可以是模塊化的,所以你只包含你需要的代碼,並且可以避免一般庫必須處理的許多跨瀏覽器問題。大衛馬克的「MyLibrary」是極少數模塊化圖書館之一。

此外,跨瀏覽器的差異正變得越來越少,DOM API越來越豐富,因此使用通用庫的需求越來越少。例如。沒有人佔用document.all了,或者不支持的瀏覽器也不支持addEventListenerattachEvent。一旦支持IE 6和7可以被刪除(幾年之後),使用單一的第三方庫幾乎沒有什麼理由,模塊化將是關鍵。一切都將是一個插件,不需要基礎庫,或者基礎庫將非常小,以提供基本DOM功能的通用API。

+1

雖然「沒有人應該用零代碼啓動實質性項目」具有一定的價值,但人們在**學習* jQuery方面** **的價值要低得多,並且對JavaScript沒有任何瞭解。這基本上導致程序員不知道JavaScript的內部工作是如何工作的,因此發佈諸如*「OMG!」這樣的問題,爲什麼不是'$('#myDiv')== $('#myDiv')? 「*。在某些時候從零開始有**總是**值;特別是自OP剛剛開始。 – Jesse 2013-05-07 23:37:14

+0

非常感謝您花時間寫下所有這些內容。我真的很喜歡你創建自己的圖書館的想法,以滿足他們目前正在從事的任何項目的特定需求。這很有道理,一定會聽從你的建議。再次感謝您花時間編寫所有這些 – 2013-05-07 23:52:30

+0

順便說一句,「少代碼更好」的概念是有缺陷的。 「更少的代碼」不是一個很好的理由,可以自己做任何事情。它應該是你最擔心的問題,特別是在使用最小化器的情況下。 「較少的代碼」通常很難調試和維護,正如許多庫常用的函數調用的鏈接一樣。很久以前,軟件開發工作的估計集中在功能上,而不是代碼行,這個焦點沒有改變,特別是因爲切割代碼可能不到軟件開發項目總成本的20%。 – RobG 2013-05-08 02:47:37

相關問題