代码之家  ›  专栏  ›  技术社区  ›  Chase Wilson

为什么每个javascript问题的答案最终都是“jquery”[关闭]

  •  15
  • Chase Wilson  · 技术社区  · 14 年前

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

    这里提出的几乎所有涉及javascript的问题都会得到以下答案:

    1. “jquery可以做到这一点”
    2. “这有一个插件”
    3. “jquery可以为您整理床铺。”

    即使是引用其他库的问题也可以通过说“改用jquery”来回答。

    jquery是否取代了整个javascript?
    这是一个严肃的问题。我们真的在展望JavaScripts的未来吗?显然,这个社区对jquery有很大的偏见(这是因为有太多的.NET开发人员吗?)但是,Web开发社区作为一个整体是否也有这种偏见?

    13 回复  |  直到 14 年前
        1
  •  3
  •   Anurag    14 年前

    我认为jquery不能取代javascript的原因很明显。因为jquery不能解决 JavaScript - the language . 它只解决不一致的问题 DOM 浏览器之间的实现是它最大的优势,它附带了一些语法上的优势。

    由于另一个明显的原因,jquery也不能替换domAPI。jquery-库,由一个组织控制,主要是 one man . 另一方面,dom是一个由大量供应商实现的规范,而jquery只是该规范各种实现的包装器。

    如果jquery要替换这些 DOM APIs 那么它就必须是一个规范,因为不同的浏览器供应商不能仅仅把它的代码放在某个地方,让所有的东西都能很好地工作。浏览器引擎可能是C、C++、Java或GoFScript,因此它绝对是一个规范而不是实现。

    一旦jquery api成为事实上的标准并在一个规范中部署,它将面临与规范现在面临的问题相同的问题。你不能仅仅是一个核心提交者,他一夜之间解决了一个问题并发布了一个新的版本,比如说1.4.3的规范。规范已经被讨论、同意、更改、发布,并且所有的实现者都必须更新他们的代码库来遵守,这使得整个过程变慢。它也失去了修复跨浏览器怪癖的能力,因为它无法控制这种怪癖,因为它在食物链的更高层次上运行。

    然后,由于它是一个规范,并且移动缓慢,所以您可以始终创建自己的库。 *Query 这进一步简化了规范API,解决了跨浏览器的问题,并以更快的速度移动。

    这就是为什么jquery不能取代dom api的原因,因为如果它取代了dom api,那么它将很快停滞不前,因为更好、更具创新性和竞争性的抽象每天都会出现。

        2
  •  22
  •   Felix Kling    14 年前

    不,jquery不替换javascript,因为它 JavaScript。但它对您有很大帮助,特别是在选择元素和在元素上应用函数方面。

    使用jquery最重要的参数可能是: 你不必考虑跨浏览器的兼容性。
    说真的,浏览器中不同的javascript实现正驱使着我 疯子 .

    但我也 不要 认为jquery应该用于所有事情。这取决于 在哪里? (例如哪些浏览器)使用的是javascript,以及 什么 实际上是这样。

    正如我在另一个问题上已经回答的那样,只有理解了javascript,才能掌握jquery。如果您不理解错误的jquery代码是如何工作的,那么很容易编写它。

    更新:

    事实上 现代的 你已经可以做一些你通常使用jquery的事情,比如使用选择器或者 each() ,本机为javascript,具有 document.querySelectorAll() 以及数组方法 forEach() .
    但问题是:在 现代的 浏览器。jquery确保您可以使用相同的API,并且不必关心浏览器版本。

        3
  •  19
  •   ЯegDwight kri    14 年前

    我有点偏向jquery。这是我唯一忽略的标签:)…

    在我看来,人们在其他问题上发表“我可以HAZ JQueries吗?”但是,当另一个人进入“普通”的javascript时。

    我相信每个人都应该在进入jQuery之前学习“纯”JavaScript + DOM操作,就像你不应该在学习C++时直接跳转到DirectX;你不能在没有JavaScript诀窍的情况下使用jQuery…

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

    但老实说,我相信如果你也精通javascript,你会有更多的机会,比如说jquery确实有一天会消失……您对JavaScript本身的体验仍然存在。

        4
  •  4
  •   George Marian    14 年前

    正如我看到的,JavaScript很难看,容易出错,而且很痛苦。我喜欢允许使用jquery、prototype.js等方法的灵活性。然而,这些库的出现证明了我的观点。并非所有这些都是javascript的错。其中一些原因是由于网络浏览器。

    为了更好地回答实际问题:

    jquery只是让事情变得更简单,就像任何好的库/框架应该做的那样。这就是它被如此多建议的原因。在jquery中比普通的javascript更容易实现。试图解释让普通JavaScript在各种情况下工作的所有细节可能是一个严重的痛苦。

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

        5
  •  3
  •   spinon    14 年前

    我不能代表所有人说话,但jquery只是让javascript任务更简单。更不用说它们是跨多个浏览器进行测试的,因此不必担心交叉兼容问题。

    在jquery的1行中可以编写的内容,可能需要编写自己的javascript 10个或更多。另外,使用这个库的好处是,它已经被测试了您不必担心的bug。

    只是我的意见。

        6
  •  2
  •   Lelando    14 年前

    jquery是否取代了整个javascript?

    在这个线程中我唯一没有看到的是:jquery不能替换javascript,,,它 JavaScript。它只不过是一个用javascript编写的函数集合,它可以处理许多开发人员常用的和期望的需求。

    比如说,你在做特别的剪纸之前,总是先做自己的纸(把木头切碎,纸浆化,干燥,装饰等等)。有一天,当你在自制纸上剪纸时,有人向你指出了预制纸的神奇之处(哦,快乐的一天),并说“没必要自己做……直接享受剪纸的乐趣吧,“你从来没有用过预制纸……对你来说,纸是花大量时间与木头打交道的结果。所以…既然你发现了Acme纸,你会问Acme纸有没有 替换 木头?当然不是。。。它是制造出来的 木材。相反,你会突然想到Acme纸是一种节省时间的方法,它是一种在没有木材加工麻烦的情况下制造出纸张的最终结果。

    同样地,jquery(商标纸)并没有取代它所用的javascript(木头),它只为你省去了制作你自己的实用功能(纸)的麻烦,然后你就可以开始制作你自己的自定义代码(小剪纸)。

    我把这个问题搞混了吗?

    干杯!

        7
  •  2
  •   Stephen    14 年前

    我不能说我对特定框架有偏见,但通常在做正确的事情和做正确的事情时,使用框架胜过普通的JavaScript。大卫沃尔什在这里说得最好:

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

        8
  •  1
  •   swilliams    14 年前

    如果您只是使用JavaScript来操作DOM和Ajax,那么为什么不使用框架来完成繁重的提升和咕哝工作呢?

    JavaScript也扩展到了网页和DOM之外。见 node.js 为了某种严肃的敬畏。看一眼,读这个 blog post (尽管同时有更多的人在场,这更令人印象深刻)。

        9
  •  1
  •   going    14 年前

    这与询问为什么倾向于使用任何框架(如mvc.net、cakephp等)是一样的:速度、灵活性、重用等。

    然而,尽管框架做了很多很酷的事情,但最终它并不能取代对底层语言的了解和理解。

        10
  •  1
  •   pop850    14 年前

    对我来说,jquery有点像Mac的可可。我已经读到cocoa框架仅仅由许多“低级”的Unix命令组成,这些命令是mac操作系统的基础。因此,当您做一些像分配内存这样简单的事情时,就会运行这些长期丢失的简单命令。

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

    如果一个特定的“方便的花花公子,预制的和随时可用的”功能满足你的需要呢? 在jquery这个快乐的“简单”世界里不存在吗?如果开发人员依赖jquery,他们将处于全损状态。在我看来,我们开发人员必须继续保持独立, 创建我们自己的代码 尽管使用 小的 预制的东西也不疼。

        11
  •  1
  •   Todd Richardson    14 年前

    下面介绍了很多关于API或框架的内容。一般来说,更多的用户将倾向于生成更好的文档。文档在采用过程中可能会有很长的路要走。

    jquery确实有其局限性,至少在写这个答案的时候是这样。例如,今天我想用一个XHR测试功能,它大部分时间都保持在readystate 3。我决定最好自己编写jquery插件,而不是使用通常使用的$.Ajax。那不是什么坏事。然而,我逐渐意识到jquery是在许多不同浏览器的许多版本上测试的。我可以通过使用一个框架来打击目标可用性受众。

    最后,我可以在foresend之前尝试使用$.ajax,看看是否有一种方法可以附加readystate 3的处理程序,但是我阅读的文档让我相信,对于我需要完成的任务来说,这将是更大的工作。

    总的来说,我不得不说,比起我尝试过的其他框架,我更喜欢jquery。当有别的事情发生时,我也会试试。

        12
  •  1
  •   Dan Stocker    14 年前

    我最近注意到了同样的事情。那个jquery——但采用了其他框架——破坏了分析思维。开发人员将浏览器脚本视为duplo lego,而实际上它是一种技术。

    jquery虽然是一个很好的UI操作工具,但它并没有涵盖高级JS编程的各个方面。例如,数据呢?jquery在这方面相当差,但是,当出现与排序或过滤有关的问题时,我们会立即搜索jquery插件。

    jquery不会,不能整体替换js。

        13
  •  0
  •   balupton    14 年前

    JQuery已经成为一个事实上的标准,C或Java是面向桌面编程世界的方式——每个人都知道,或者应该是因为它提供了通用语言。通常每个人都从jquery开始,然后从他们的经验中学习javascript,并可以到其他地方查看。

    Javascript很难使用,jquery使启动变得容易。一旦人们学习了jquery,他们将足够熟悉javascript,从而学习其他框架或创建自己的最小化框架。但遗憾的是,你可以学点别的东西,但一般来说,学习曲线更大。

    另外一些非常流行的工具是mootools和sproutchore——两者都有巨大的后盾。jquery有点像javascript的培训轮子,mootools一路都是oo,sproutcore是云计算中的桌面应用程序。就像任何编程语言或框架一样,你学习的是最容易入门的语言或框架,然后当你变得更好的时候,你就会意识到不同的语言和框架对不同的事物更好,或者至少你应该意识到;-)呵呵。