是否有必要学习用于Web开发的JavaScript DOM方法,现在我们有jQuery等人吗?

时间:2010-12-05 12:49:50

标签: javascript jquery dom

有了JQuery的可用性,是否需要学习使用Javascript直接进行DOM操作才能成为专业的Web开发人员/网站建设者等?

这可能也会被Prototype,MooTools等问过,但除了他们的名字我不熟悉它们。

5 个答案:

答案 0 :(得分:5)

  

注意:这个问题被改写了   我的回答反映了最初的   问题,但我一直在补充。

<强>绝对即可。 Jquery IS Javascript虽然它确实抽象了许多跨浏览器的DOM差异,但仍然容易出现相同的解析错误,范围误解等等。

在不知道基本DOM知识或必要的Javascript知识的情况下使用jQuery是我认为危险的,有点像为一个孩子提供一个非常强大的枪,他可能会在不知道如何使用这样一个强大的工具的情况下意外射击自己的脚正确的方式。

如果抛出的错误指向DOM中的任何内容,那么直接使用jQuery教授的人绝对不知道如何调试问题。对于像比较一样简单的东西,看一个元素是否是另一个元素(对于像当前状态这样的东西),他们会尝试类似的东西:

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

由于创建了两个唯一的jQuery对象,因此返回false。如果他们知道如何获取对DOM节点的引用,那么他们就可以完成$('#el')[0] == $('#el')[0]

任何时候你使用jQuery插件并遇到一些神秘的行为,没有DOM知识,你几乎不得不依赖别人来帮助你。具有DOM知识的开发人员将能够更好地调试并了解问题的根源,因此您只会让自己失去更多的时间,让您在jQuery领域感到困惑。

此外,如果一个人希望获得高知识水平而不仅仅是一个普通的乔jQuery开发人员那么他将非常需要大量的DOM差异和一般的Javascript知识,否则你将限制你的技能水平巨大的利润。

如果您坚持使用Stackoverflow一段时间,您会在日常问题中看到这一点,其中使用简单快捷方式的人缺乏解决问题所需的基本JS / DOM知识。

答案 1 :(得分:2)

在某些情况下,您可以想象不需要DOM操作库的开销。

E.g。对于移动开发,移动互联网连接目前仍然有点慢,因此您可能希望通过放弃库并使用本机DOM代码来节省带宽。 (并且可能节省一点执行时间,因为移动设备在运行JavaScript时比台式计算机慢一点。)

但随着时间的推移,设备,库和互联网连接都应该变得更快,所以我认为你不太可能在主流的日常网络开发中做很多直接的DOM脚本。

答案 2 :(得分:2)

如果你不想学习基础知识,那肯定是:) 如果你对东西的作用不感兴趣,那肯定是...... 如果你想在每次达到jQuery的限制时大声呼救,那肯定是! 如果你想依靠这里的人回答你的简单问题,那肯定是:D(代表我们......)

  

“傻瓜想知道智者问道。”

换句话说,知道你使用的工具是如何工作的,否则你最终会产生可怕的依赖。

答案 3 :(得分:2)

您可以使用像jQuery这样的库,对Javascript知之甚少,几乎不了解DOM,但这只会让您获得库。你只能做别人在你面前做过的事情。

了解底层系统的工作原理还可以让您更有效地使用库。了解库必须处理的内容可以让您知道为什么某些使用库的方式存在很大的性能差异,以及为什么有些东西根本不起作用。

答案 4 :(得分:1)

jQuery为您简化了很多东西,但是jQuery调用的底层JavaScript知识可以让事情变得更快:

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

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

都是等价的,但是后者的速度更快(尽管只是毫秒级),因为你直接使用JavaScript,而不是让jQuery代表你调用document.createElement()。再次,这是绝对一个荒谬的微优化。

其他示例正在使用DateMathstring个对象/函数。 jQuery没有为这些实现替换(明智的是,因为它们已经相当容易使用)。