为什么每个javascript问题的答案最终都是“jQuery”

时间:2010-07-27 22:18:56

标签: javascript jquery

过去几周我一直在关注这里的javascript问题,我发现了一个常见的反复出现的主题。

几乎所有涉及JavaScript的问题都得到了回答:

  1. “jQuery可以做到这一点”
  2. “有一个插件”
  3. “jQuery可以为你铺床。”
  4. 即使是引用其他库的问题也可以通过说“使用jQuery”来回答。

    jQuery是否取代整体JavaScript? 这是一个严重的问题。我们真的在关注JavaScripts的未来吗?显然,这个社区对jQuery有很强的偏见(因为有很多.NET开发人员?),但整个Web开发社区是否有这种偏见呢?

13 个答案:

答案 0 :(得分:22)

不,jQuery不会取代JavaScript,因为它 JavaScript。但它对你有很大的帮助,特别是在选择元素和在元素上应用函数时。

使用jQuery可能是最重要的论据:您不必考虑跨浏览器兼容性。
说真的,浏览器中的不同JavaScript实现让我疯狂

但我也认为jQuery应该用于所有事情。这取决于使用JavaScript的 where (例如哪些浏览器)以及您实际执行的操作

正如我已经在其他问题上回答的那样,如果你理解JavaScript,你只能掌握jQuery。如果您不理解它的工作方式,那么编写错误的jQuery代码非常容易。

<强>更新

事实上在现代浏览器中,您已经可以使用通常使用jQuery的东西,例如在JavaScript中使用选择器或each()document.querySelectorAll()和数组方法forEach()
但这就是问题所在:在现代浏览器中。 jQuery确保您可以使用相同的API,而不必关心浏览器版本。

答案 1 :(得分:19)

我对jQuery有偏见。这是我唯一被忽略的标签:)...

在我看来,人们不宜在其他问题上发帖说“我能不能jJeries?”但是,当另一个人进入“普通”JavaScript时。

我相信每个人都应该在进入jQuery之前学习“简单的”javascript + dom操作,有点像你学习c ++时不应该直接跳到DirectX;如果没有JavaScript知识,你就无法使用jQuery ......

但最后,你应该使用你觉得更舒服的东西。

但说实话,我相信如果你也熟练掌握JavaScript,你会有更多的机会,让我们说jQuery有一天会消失......你对JavaScript本身的体验仍然存在。

答案 2 :(得分:4)

正如我所看到的,JavaScript是丑陋的,容易出错并且很痛苦。我喜欢允许jQuery,prototype.js等方法的灵活性。但是,这些库的出现证明了我的观点。并非所有这些都是JavaScript的错。其中一些是由于网络浏览器。

更好地回答实际问题:

jQuery只是让事情变得更容易,就像任何好的库/框架一样。这就是它得到如此建议的原因。在jQuery中执行它比在纯JavaScript中更容易。试图解释所有细节以使普通JavaScript在各种情况下都能正常工作可能会非常痛苦。

那就是说,我同意。如果有人正在寻找一个JavaScript解决方案,那就是他们应该得到的。然而,他们应该意识到这可能是一个艰难的过程,并不是每个人都有时间/兴趣去解决那么多麻烦。

答案 3 :(得分:3)

嗯,我不能代表所有人,但jquery只是让javascript任务变得更容易。更不用说它们在多个浏览器中进行测试,因此不太关心交叉兼容问题。

你可以用1行jquery写的东西可以带你10个或更多写你自己的javascript。使用该库的好处还在于它已针对您不必担心的错误进行了测试。

只是我的意见。

答案 4 :(得分:3)

我认为jQuery无法替代JavaScript,原因很明显。这是因为jQuery无法解决JavaScript - the language中的单个问题。它只解决了浏览器之间不一致DOM实现的问题,这是它最大的优势,并且带有一些语法糖。

jQuery也不能替代DOM API,这是另一个明显的原因。 jQuery - 库,由一个组织控制,主要是one man。另一方面,DOM是由大量供应商实现的规范,而jQuery仅仅是该规范的各种实现的包装。

如果jQuery要替换这些DOM APIs,那么它必须是一个规范,因为不同的浏览器供应商不能只是拿它的代码并将其推到某个地方并使一切运行良好。浏览器引擎可能是C,C ++,Java或GolfScript,因此它绝对有必要成为规范而不是实现。

一旦jQuery API成为事实上的标准并在规范中得到规划,它将面临规范现在面临的同样问题。你不能只是一个在一夜之间解决问题的核心提交者,并发布一个新的版本说1.4.3的规范。规范已经讨论,同意,更改,发布,并且所有实现者都必须更新其代码库以符合这一要求,这会使整个过程变慢。它也失去了修复跨浏览器怪癖的能力,因为它无法控制它,因为它在食物链中的更高层次上运作。

然后,由于它是一个规范并且移动缓慢,您可以随时提出自己的库*Query,进一步简化规范API,修复跨浏览器问题,并以更快的速度移动

这就是为什么jQuery不能取代DOM API的原因,因为如果它确实如此,它会停滞不前,因为每天都会出现更好,更具创新性和竞争性的抽象。

答案 5 :(得分:2)

我不能代表对特定框架的偏见,但通常使用框架胜过vanilla javascript,当涉及到完成任务并且做得对。大卫沃尔什在这里说得最好:

http://davidwalsh.name/6-reasons-to-use-javascript-libraries-frameworks

答案 6 :(得分:2)

  

jQuery是否整体取代了JavaScript?

我在这个帖子中从未见过的唯一一件事是:jQuery不能取代Javascript ,,, Javascript。它只不过是Javascript中预先编写的函数集合,它可以处理许多开发人员常用的和期望的需求。

让我们说你在制作非常特殊的纸张切口之前,总是制作自己的纸(砍木头,碾碎,干燥,装饰等)。有一天,当你用自制纸张制作剪纸时,有人会向你指出预制纸张的奇迹(哦,快乐的一天),并说“不需要自己制作纸张......”制作剪纸。“你从来没有使用预制纸......对你而言,纸张是花在木头上的大量时间的结果。那么......既然你已经发现了Acme Paper,你会问Acme Paper是否已经替换了木材?当然不是......它是由木材制成的。相反,你会突然想起Acme Paper作为一个节省时间的方法,作为一种方法来达到最终结果,即在没有木工工作麻烦的情况下制作剪纸本身。

同样,jQuery('品牌'论文)并没有取代它制作的Javascript(木头),它只是让你省去了制作自己的实用功能(纸张)之前的麻烦。制作自己的自定义代码(小纸镂空)的乐趣。

我是否混淆了这个问题?

干杯!

答案 7 :(得分:1)

如果您只是使用JavaScript来操作DOM并执行AJAX,为什么不使用框架来完成繁重的工作?

JavaScript确实扩展到了网页和DOM之外。请参阅node.js了解一些非常棒的内容。稍微查看一下这个blog post(尽管一次有更多人参加会议更令人印象深刻)。

答案 8 :(得分:1)

与询问为什么偏好使用任何框架(例如MVC .net,CakePHP等)的速度,灵活性,重用等等是一回事。

然而,虽然框架做了很多很酷的事情,但最终并没有取代了解和理解基础语言的需要。

答案 9 :(得分:1)

对我来说,jQuery有点像Mac的Cocoa。我已经读过Cocoa框架只是由许多“低级”Unix命令组成,这些命令是Mac OS的基础。所以,当你做一些像分配内存这样简单的事情时,就会运行这些长期丢失的简单命令。

如果从Unix到Cocoa的进展发生在javascript到jQuery中,我不会感到惊讶 - 毕竟,调用一个内部执行10个基本Javascript操作的jQuery命令会更容易(特别是如果命令是常用的话) )。就个人而言,我反对它,因为它限制了开发者的自由。虽然其他人可能认为它允许更多的创造力,因为它更容易/更快地构建新的/更好的东西,人们将依赖它,并最终变得依赖,并忘记所有关于Javascript的基本核心。

如果你需要一个特定的“方便花哨,预制和即用”功能怎么办? 在jQuery的快乐“简单”世界中不存在?如果开发人员依赖于jQuery,他们将完全失败。在我看来,我们开发人员必须继续独立并且创建我们自己的代码,尽管使用 little 预先制作的东西也不会受到伤害。

答案 10 :(得分:1)

以下说明了很多关于API或框架的内容。通常,更多用户倾向于生成更好的文档。文档可以在采用过程中发挥很大作用。

jQuery确实有其局限性,至少在写这个答案的时候。例如,今天我想用大多数时间保持在readystate 3的xhr来测试功能。我决定自己编写自己的jQuery插件,而不是使用常用的$ .ajax。这不会是一件坏事。但是,我开始意识到jQuery已经在许多不同浏览器的许多版本上进行了测试。我只需使用一个框架即可达到目标可用性受众。

最后,我可以尝试使用$ .ajax beforeSend来查看是否有办法为readystate 3附加一个处理程序,但是我正在阅读的文档让我相信它会更有用。我需要完成的任务。

总的来说,我不得不说我比我尝试过的其他框架更喜欢jQuery。当其他东西出现时,我也会尝试一下。

答案 11 :(得分:1)

我最近注意到了同样的事情。那个jQuery - 但是采取任何其他框架 - 破坏了分析思维。开发人员将浏览器脚本视为Duplo Lego,而实际上是Technics。

jQuery虽然是用于UI操作的优秀工具,但并未涵盖高级JS编程的各个方面。例如,数据怎么样? jQuery在这方面相当差,但是当出现与排序或过滤有关的问题时,我们会立即去搜索jQuery插件。

jQuery不会,不能替代JS作为一个整体。

答案 12 :(得分:0)

jQuery已成为事实上的标准,C或Java用于桌面编程世界的方式 - 每个人都知道,或者应该提供通用语言。通常情况下,每个人都从jQuery开始,然后从他们的经验中学习Javascript,并可以在别处寻找。

Javascript很难,jQuery让它很容易上手。一旦人们学习了jQuery,他们就会熟悉Javascript,足以学习其他框架或创建自己的小框架。但是唉,你可以学到别的东西,但通常学习曲线更大。

其他一些非常受欢迎的产品是MooTools和SproutCore--两者都有巨大的支持。 jQuery有点像javascript的训练轮,MooTools一直都是OO,SproutCore适用于云中的桌面应用。就像任何编程语言或框架一样,你学习最简单的开始,然后随着你的进步,你会发现不同的语言和框架对于不同的东西更好 - 或者至少你应该意识到这一点;-)呵呵。