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

IT技术 javascript jquery frameworks
2021-01-31 14:17:19

背景: 我对成天在 HTML、Javascript 和 CSS 上进行 hack 并且忽略像 jQuery(或其他等效的辅助框架这样的工具拒绝使用它们的前端开发人员的数量感到震惊我不是在谈论 JavaScript 大师,我在谈论每天在战壕里的 Joe 生产开发人员。我收到很多更像是借口或个人意见的争论,我认为它们没有任何技术value,我想确保我没有遗漏任何东西。

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

我不是在寻找宗教或教条论点或主观意见“就像其他框架更好”,将 jQuery 视为问题中所有可比框架的稻草人。

6个回答

2015 年更新:

在 2011 年的这个答案中,我谈论的是 jQuery、YUI 或 Prototype 之类的库。到了 2015 年,这种推理仍然适用于 Angular、React 或 Ember 等框架。在这 4 年里,技术取得了巨大的进步,尽管我看到的对 React 或 Angular 的偏见比对 jQuery 或 YUI 的偏见少得多,但同样的想法——尽管程度较轻——今天仍然存在。

2016 年更新:

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

那篇文章基本上是对这个问题的非常详细的回答。如果在我写下面的答案时它可用 - 我肯定会引用它。

原答案:

我将回答有关 jQuery 的问题,但这些都是我听到的反对使用 YUI、Prototype、Dojo、Ext 和其他少数人的相同论点。我听到的主要论点:

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

  2. 速度- 编写纯 JavaScript 可能会更快,但是对于大多数人来说,编写可移植的JavaScript 似乎是不可能的。一个速度更快但不适用于所有流行浏览器的网站在现实世界中毫无用处。此外,jQuery 使用了一些非常繁重的优化,实际上非常快,并且在每次发布时都会变得更快,因此除了琐碎的示例之外,手动编写更快的代码实际上并不容易。(*)

  3. “知识产权” ——一家公司害怕使用别人的代码——而事实上 jQuery 是开源和免费软件,从你奶奶的博客到亚马逊,从 Twitter 到美国银行,从谷歌到微软——如果他们可以的话使用它然后任何公司都可以使用它。

  4. 我不记得听到任何其他被认真使用的论点。

(*) 这是一个简单的例子:getElementById('someid') vs. jQuery('#someid')

使用 getElementById 更快吗?是的。当然,当 Blackberry 4.6 返回不再存在于文档中的节点时,每个人都会检查 parentNode 以进行捕获,对吗?jQuery 可以。而且每个人都会处理IE和Opera按名称而不是ID返回项目的情况,对吗?jQuery 可以。如果您不这样做,那么您的代码就不可移植,并且您会引入难以发现的细微错误。getElementById 是人们可能找到的最简单的例子——甚至不要让我开始研究事件、AJAX 和 DOM ......

更新:

询问为什么有人不想使用 jQuery 实际上还有第四个结果。我忘了把它放在这个清单上,因为它不是真正的答案,而是缺乏任何答案。我昨天收到评论让我想起了它。这几乎不是要添加到列表中的“技术原因”,但可能仍然很有趣,实际上可能最常见的react。

不过,我个人怀疑所有这些react的主要原因是我认为计算机科学进步的最大障碍:“我不想使用它,因为我从未使用过,因此它必须没那么重要。”

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

企业中有太多人不了解开源许可。他们知道 GPL 具有传染性,必须避免在所有可能进入产品的软件中使用。他们中的许多人担心 GPL 感染,通过禁止在企业的任何地方使用开源来确保安全。
2021-03-14 14:17:19
这就是为什么我总是说微软使用 jQuery,这是地球上最后一家会冒险使用任何会威胁到他们宝贵的知识产权的公司。
2021-03-17 14:17:19
这是一个非常高质量的答案,感谢您花时间写下来!
2021-04-07 14:17:19
您忘记了性能的实际主要原因。与原生 JS 相比,jQuery 在 DOM 操作方面非常慢——这是众所周知的事实。它在小型应用程序中并不明显,但它确实为大型 Web 应用程序中的交互增加了明显的延迟。另外,您对文件大小的看法是错误的。我很少会编写如此多的原生 JS,以至于它的代码量超过了所有 jQuery 库和我的应用程序中的代码量。你有偏见。jQuery 在构建大多数网站和 Web 应用程序原型方面很有用,但也有不使用它的情况:此外,nodeJS 中没有 DOM。
2021-04-08 14:17:19
在易于理解的十六进制数之前,有插件板截至 2010 年 7 月,仍有至少一台生产IBM 402
2021-04-10 14:17:19

jQuery在以 DOM 为中心的范式中表达一切,这可能会产生误导,并且不需要在应用程序模式中表达任何东西。

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

Rebecca Murphey 有一篇关于她自己从 jQuery转向Dojo的精彩文章 - 博客文章更多地是关于为什么不使用jQuery 与为什么使用Dojo。

我引用了她的博客文章,因为她谈到了为什么不使用jQuery 以及为什么选择 Dojo。要点是我上面详述的原因。就我个人而言,我认为现在不使用框架源于无知、骄傲或两者兼而有之。
2021-03-18 14:17:19
关于以 DOM 为中心的范式的有趣点,但我的问题包括不想使用任何东西,包括 Dojo。
2021-03-23 14:17:19
感谢您提供的附加链接,它看起来是一个经过深思熟虑的作品,我一定会阅读它
2021-04-01 14:17:19
关于这一点,如果您有时间,您可能会发现 Rebecca 的 jsconfeu 演示值得(并且可能与您当前的兴趣更相关):jsconfeu.blip.tv/file/4308069
2021-04-13 14:17:19

不使用框架的一个原因 - 这是一个极端的边缘情况 - 是为另一个网站编写可嵌入代码时,例如横幅。随意插入一些复杂的库或其他库会污染命名空间并可能破坏其他人的站点。不是说我无论如何都不会让一些广告商尝试,吸水池的人渣,但我离题了......

当一个框架已经存在并且同样有能力时,我不赞成添加一个框架。我经常看到它,这是我讨厌的宠物,我认为它是毫无根据的膨胀。那完全是另一个问题。

除此之外,我想不出不这样做的正当理由。

stackoverflow.com/questions/693174/... => 不仅在将代码嵌入另一个网站时,而且在其他支持 javascript 的引擎中。
2021-03-14 14:17:19
这是一个很好的答案,没有人想到
2021-03-16 14:17:19
这。刚刚遇到一个页面,我不得不对 JQuery 1.4.4 作为 JS 标签加载的页面进行一些维护,而 JQuery 1.3.x 使用 Google 的 CDN 和替代命名空间加载(因此 $() 方法变成了类似于 $jq ())。
2021-04-09 14:17:19

文件大小 - 但实际上,除此之外,它是跨平台 javascript 和浏览器差异的绝对天赐之物。您必须有一些非常好的理由不想在您的工具包中使用它(或者成为一个原教旨主义的开发人员白痴)。

是的,这些很好的理由正是我正在寻找的......
2021-03-16 14:17:19
@jpea:品脱会做到这一点。;o) 使用 Sizzle 的要点。
2021-03-19 14:17:19
我不能赞成这个。压缩的 jQuery 是 29kb ——比大多数图像小很多—— 如果从 CDN 提供(请参阅docs.jquery.com/Downloading_jQuery),那么它可以很好地缓存。
2021-03-22 14:17:19
没有什么比一个好的、非常主观的意见来引发评论了:) - 对于那些只使用 jQuery 来简化选择器的人来说,他们也可以尝试使用它正在使用的选择器引擎,Sizzle - 小得多 - sizzlejs.com
2021-04-01 14:17:19
如果我可以为您的“原教旨主义开发者白痴”评论添加一些平衡,请考虑这样一个事实,即也有很多原教旨主义的 jQuery 白痴那些强烈推荐在任何情况下都使用 jQuery的人,包括当您只需要 5 行 javascript 时。
2021-04-03 14:17:19
  • 他们无法证明文件大小的合理性(即使它可能小于不利用提供的抽象的脚本)。
  • 他们不想依赖第三方工具。
  • 他们的业务不想运行任何库(无论出于何种原因)。
  • 他们的企业不想运行任何不是由他们的员工编写的 JavaScript 代码。
其中一些观点让我想起了 5 年前我对这些框架的看法,当时它们还很年轻。当时我几乎不知道他们为程序员节省了多少必须定期处理的事情,我很自然地想,“为什么不做我自己需要做的事情呢?” 我想知道,你认为一些公司在5 年后仍然这样想的可能性有多大在大多数情况下,除非文件大小或 IP真的是一个问题,否则我会说他们对自己造成了严重的伤害。
2021-04-01 14:17:19
@Ken Franqueiro 我在 Stack Overflow 上看到过。有人问不使用jQuery做一些事情,然后有人问为什么不使用jQuery?对此,提问者回复我们公司不能使用任何第三方库也许他们对NASA的工作,新的太空探索的机器使用JavaScript(嘿,这无处不在:P)
2021-04-03 14:17:19
是时候找人找新工作了!
2021-04-05 14:17:19