什么是不使用jQuery的经验技术原因?

上下文:我很惊讶于整天侵入HTML,Javascript和CSS的前端开发人员的数量,并忽略像jQuery(或其他等效的助手框架)这样的工具并拒绝使用它们。 我不是在谈论JavaScript大师,我每天都在谈论Joe生产开发人员。 我得到了许多更像是借口或个人观点的观点,我认为这些观点没有任何技术上的优点,我想确保我不会错过任何东西。

问题:不使用jQuery的经验技术原因是什么?

我不是在寻找宗教或教条式的论点或主观意见,“像其他一些框架更好”,将jQuery视为问题中所有类似框架的草根人员。


2015年更新:

在2011年的这个回答中,我正在讨论像jQuery,YUI或Prototype这样的库。 今天在2015年,推理仍然适用于Angular,React或Ember等框架。 在这4年中,这项技术进展非常迅速,尽管我看到对React或Angular的偏见比我对jQuery或YUI的看法要少得多,但同样的想法 - 虽然程度较轻 - 至今仍然存在。

2016年更新:

我强烈推荐几天前发表的文章:

  • 为什么选择jQuery? Michael S. Mikowski,单页网络应用程序书的作者
  • 这篇文章基本上是对这个问题的一个非常详细的回答。 如果我在写下下面的答案时可用 - 我肯定会引用它。

    原始答案:

    我会回答关于jQuery的问题,但这些是我听说过的使用YUI,Prototype,Dojo,Ext和其他几个方法的论点。 我听到的主要论据是:

  • 文件大小 ,实际上在jQuery 3.2.1的情况下为84.6 KB - 可能小于普通网站上的徽标,并且可以从Google的CDN提供,而CDN可能已经存在于大多数访问者的缓存中。 由于使用jQuery始终意味着您自己的JavaScript文件的文件较小,因此它实际上可能意味着较小的下载量,即使尚未存在于浏览器缓存中。

  • 速度 - 编写纯JavaScript可能会更快,但对于大多数人来说,编写便携式JavaScript似乎是不可能的。 一个速度更快但不适用于所有流行浏览器的网站在现实世界中毫无用处。 除了jQuery使用一些相当繁重的优化之外,实际上它的速度非常快,并且在每个发行版中都会变得更快,所以实际上并不容易为除了简单示例之外的其他任何东西编写更快的代码。

  • “知识产权” - 一家公司害怕使用别人的代码 - 事实上,jQuery是开源和免费软件,可用于从奶奶的博客到亚马逊,从Twitter到美国银行,从Google到微软 - 如果他们可以使用它,那么任何公司都可以使用它。

  • 我不记得任何其他被认真使用的论点。

  • (*)下面是一个简单的例子:getElementById('someid')与jQuery('#someid')

    使用getElementById更快吗? 是。 当然,当Blackberry 4.6返回文档中不再存在的节点时,每个人都会检查父节点,对不对? jQuery的确。 每个人都会处理IE和Opera按名称而不是ID返回项目的情况,对吗? jQuery的确。 如果你不这样做,那么你的代码是不可移植的,你会引入很难找到的微妙的错误。 而getElementById是人们可能找到的最微不足道的例子 - 甚至没有让我开始介绍事件和AJAX以及DOM ...

    更新:

    实际上,有第四个结果是问为什么有人不想使用jQuery。 我忘了把它放在这个清单上,因为它不是一个真正的答案,而是没有任何答案。 我昨天得到的评论让我想起了这件事。 这并不是列入清单的“技术原因”,但可能很有意思,实际上可能是最常见的反应。

    然而,我个人认为,所有这些反应的主要根源是我认为是计算机科学进步的最大障碍:“我不想使用它,因为我从来没有这样做过,因此它必须不是那么重要。“

    它曾经是优化汇编器,编译器,结构化编程,高级语言,垃圾收集,面向对象编程,闭包或几乎所有我们认为理所当然的事情 - 而今天它就是AJAX库。 也许有一天没有人会记得我们曾经在应用程序级别上手动与原始DOM API进行交互,就像现在没有人记得我们曾经使用原始的,未经修改的,难以理解的十六进制数字编写程序。


    jQuery表达了以DOM为中心的范例中的所有内容,这些范例可能会引起误解,并且不需要在应用程序模式中表达任何东西。

    许多开发人员通过这种以DOM为中心的模式将自己编程到一个角落,最终意识到他们没有创建任何可扩展或可重用的东西。

    Rebecca Murphey写了一篇关于jQuery自己转向Dojo的文章 - 博客文章更多的是关于为什么不使用jQuery而不是为什么使用Dojo。


    不使用框架的一个原因 - 这是一个极端的边缘案例 - 为其他网站(如横幅)编写可嵌入的代码时。 随意插入一些复杂的库或其他文件将会污染命名空间并可能破坏其他人的网站。 不是说我不会让它通过一些广告商尝试反正吸池塘的渣滓,但我离题了......

    我不赞成在已经存在且具有同等能力的情况下添加框架。 我经常看到它,这是我讨厌的宠物,我认为它是无理的膨胀。 这完全是另一个问题。

    除此之外,我想不出一个合理的理由。

    链接地址: http://www.djcxy.com/p/64673.html

    上一篇: What are some empirical technical reasons not to use jQuery?

    下一篇: When to use Vanilla JavaScript vs. jQuery?