上下文: 我为一整天整天攻击HTML,Javascript和CSS而 忽略 诸如jQuery( 或其他等效的辅助框架 )之类的工具而 拒绝 使用它们的前端开发人员感到惊讶。我不是在谈论JavaScript专家,而是在乔生产开发人员的日常讨论中谈论。我收到了很多像借口或个人观点的论据,但我认为这些论点没有任何技术上的优点,我想确保自己没有遗漏任何东西。
问题: 不使用jQuery的一些经验技术原因是什么?
我并不是在寻找宗教或教条论点或主观观点,“就像其他框架更好”,jQuery是问题中所有可比较框架的稻草人。
在2011年的这个答案中,我谈论的是jQuery,YUI或Prototype之类的库。在2015年的今天,推理仍然适用于Angular,React或Ember之类的框架。在那4年中,这项技术取得了长足的进步,尽管我对React或Angular的偏见要比对jQuery或YUI的偏见要少得多,但今天仍然存在相同的想法-尽管程度较小。
我强烈推荐几天前发表的文章:
该文章基本上是对该问题的非常详细的答案。当我在下面编写答案时,如果该功能可用-我肯定会引用它。
我将回答有关jQuery的问题,但这些是我听到的反对使用YUI,Prototype,Dojo,Ext和其他一些参数的参数。我听到的主要论点:
文件大小 ,实际上在jQuery3.2.1情况下为84.6KB可能比一般网站上的徽标小,并且可以通过Google的CDN来提供,而CDN可能已经存在于大多数访问者的缓存中。由于使用jQuery总是意味着您自己的JavaScript文件的文件 较小 ,因此实际上即使没有在浏览器缓存中也意味着下载量 较小 。
速度 -编写纯JavaScript可能会更快,但是对于大多数人来说似乎无法编写 可移植的 JavaScript。一个速度更快但无法在所有流行的浏览器上运行的网站在现实世界中毫无用处。除了jQuery以外,jQuery还使用了一些非常繁重的优化来提高速度,并且在每个发行版中都变得越来越快,因此,除了琐碎的示例之外,手动编写更快的代码实际上并不是那么容易。(*)
“知识产权” -一家公司不敢使用别人的代码-实际上jQuery是开源和免费软件,从您祖母的博客到亚马逊,从Twitter到美国银行,从Google到Microsoft,到处都是使用它,那么任何公司都可以使用它。
我不记得听到其他任何认真使用的论点了。
(*)这是一个简单的示例:getElementById(’someid’)与jQuery(’#someid’)
使用getElementById更快吗?是。当然,每个人都总是检查parentNode以在Blackberry 4.6返回文档中不再存在的节点时捕获,对吗?jQuery确实如此。每个人都处理IE和Opera通过名称而不是ID返回项目的情况,对吗?jQuery确实如此。如果不这样做,那么您的代码就无法移植,并且会引入难以发现的细微错误。getElementById是一个可能发现的最简单的示例- 甚至不让我开始了解事件,AJAX和DOM …
实际上,有第四个结果是询问为什么有人不想使用jQuery。我忘记将其放在此列表中,因为它并不是真正的答案,而是 缺少使我想起了这件事
但是,我个人认为这是所有这些反应的主要原因,也是我认为这是计算机科学进步的最大障碍:“我不想使用它,因为我从未这样做,因此必须没那么重要。”
它曾经是对优化汇编程序,编译器,结构化编程,高级语言,垃圾回收,面向对象的程序,闭包或我们现在认为理所当然的几乎所有东西的反应-今天是AJAX库。也许有一天没有人会记得我们曾经在应用程序级别上与原始DOMAPI进行手动交互,就像现在没有人记得我们曾经使用原始的,未经修饰的,难以理解的十六进制数字编写程序。