2010-12-05 33 views
6

隨着JQuery的可用性,是否有任何需要學習直接的DOM操作與JavaScript,以成爲一個專業的網站開發/網站建設者/等?有沒有什麼需要學習用於web開發的JavaScript DOM方法,現在我們有jQuery等?

這可能是Prototype,MooTools等等的問題,但我除了他們的名字之外並不熟悉它們。

+2

鑑於腳本語言的可用性,CPU架構的知識已經過時了嗎? – 2010-12-05 12:51:55

+1

您需要這些知識才能更好地設計您的算法。 – Lockhead 2010-12-05 12:54:04

+1

專業開發人員是否應該依賴其他開發人員並且必須相信他們? – 2010-12-05 12:58:06

回答

5

注:這個問題是這樣改寫我 回答反映了初始 問題,但我一直在增加。

絕對。 Jquery IS雖然JavaScript確實抽象了很多跨瀏覽器DOM差異,但仍然傾向於出現相同的精確解析錯誤,範圍誤解等等。

在不知道基本的DOM知識或必要的Javascript知識的情況下使用jQuery是我認爲危險的東西,有點像給一個孩子一個非常強大的槍,他可能不小心在腳下自己射擊而不知道如何使用如此強大的工具正確的方式。

一個人直接用jQuery教完全不知道如何調試問題,如果錯誤被拋出引用DOM中的任何東西。對於作爲比較,看是否元素是另一個元素(之類的當前狀態)這樣簡單的事情,他們會嘗試一些也許像:

if ($('a.current') == $('a.current')) { } 

因爲創建了兩個獨特的jQuery對象這將返回false。如果他們知道如何獲取DOM節點的引用,他們可以剛剛完成$('#el')[0] == $('#el')[0]

無論何時,如果您使用jQuery插件並且遇到一些神祕的行爲,而沒有DOM知識,您幾乎不得不依靠別人來幫助您。具有DOM知識的開發人員將能夠更好地調試和了解問題的根源,因此您只需要設置自己就可以讓更多時間在jQuery土地上困惑不解。此外,如果有人希望獲得高知識水平,而不僅僅是普通的joe jQuery開發人員,那麼他將非常需要對DOM差異和Javascript的廣泛瞭解,否則您會限制自己的技能水平巨大的利潤。

如果您堅持一段時間Stackoverflow,您會在日常問題中看到這一點,其中採取簡單快捷方式的人缺乏解決問題所需的基本JS/DOM知識。

1

有一個偉大的很多事情的jQuery簡化了您,但底層的JavaScript知識jQuery的電話可以使事情更快一點:

$('<div />').appendTo($('body')); 

$(document.createElement('div')).appendTo($('body')); 

都是等價的,但後者的陰影速度更快(儘管只有毫秒級),因爲您直接使用JavaScript,而不是讓jQuery代表您的代碼調用document.createElement()。再次,這是肯定是一個荒謬的微優化。

其他示例正在與Date,Mathstring對象/函數一起使用。 jQuery沒有實現這些替代品(明智,所以,因爲它們已經很容易處理了)。

2

在某些情況下,您可能會想到不需要DOM操作庫的開銷。

E.g.對於移動開發而言,目前移動互聯網連接仍然有點緩慢,因此您可能希望通過放棄圖書館和使用原生DOM代碼來節省帶寬。 (並且可能會節省一點執行時間,因爲移動設備在運行JavaScript時比桌面計算機的運行速度稍慢)。

但隨着時間的推移,設備,庫和互聯網連接應該都會變得更快,所以我認爲不太可能在主流的日常Web開發中做很多直接的DOM腳本。

2

如果你不想學習的根本基礎,確保它是:)
如果你不感興趣的東西是如何工作的,肯定是....
如果你想呼救每當你達到jQuery的極限時,確定它就是!
如果你想依靠的人在這裏回答你簡單的問題,確保它是:d(代表我們...)

「傻瓜奇觀智者問。」

換句話說,知道你使用的工具是如何工作的,否則你最終會產生可怕的依賴。

2

你可以使用類似jQuery的庫,但對JavaScript幾乎沒有什麼瞭解,並且幾乎沒有關於DOM的知識,但這隻會讓你儘可能地讓圖書館給你。你只能做別人在你之前完成的事情。

瞭解底層系統的工作原理還可讓您更高效地使用庫。瞭解圖書館需要處理的內容可以讓你知道爲什麼使用圖書館的某些方式會有很大的性能差異,以及爲什麼有些東西根本不起作用。

相關問題