上下文: 我为一整天整天攻击HTML,Javascript和CSS而忽略诸如jQuery(或其他等效的辅助框架)之类的工具而拒绝使用它们的前端开发人员感到惊讶。我不是在谈论JavaScript专家,而是在每天都在谈论Joe生产开发人员。我有很多论点,例如借口或个人观点,我认为这些论点没有任何技术价值,我想确保自己没有遗漏任何东西。
问题: 不使用jQuery的一些经验性技术原因是什么?
我并不是在寻找宗教或教条论点或主观观点,“就像其他框架更好”,jQuery是问题中所有可比框架的稻草人。
上下文: 我为一整天整天攻击HTML,Javascript和CSS而忽略诸如jQuery(或其他等效的辅助框架)之类的工具而拒绝使用它们的前端开发人员感到惊讶。我不是在谈论JavaScript专家,而是在每天都在谈论Joe生产开发人员。我有很多论点,例如借口或个人观点,我认为这些论点没有任何技术价值,我想确保自己没有遗漏任何东西。
问题: 不使用jQuery的一些经验性技术原因是什么?
我并不是在寻找宗教或教条论点或主观观点,“就像其他框架更好”,jQuery是问题中所有可比框架的稻草人。
var one = $("<div/>").data("add", 1); var two = $("<div>").data("add", 2); console.log(one.data("add")+two.data("add"));
Answers:
在2011年的这个答案中,我谈论的是jQuery,YUI或Prototype之类的库。在2015年的今天,推理仍然适用于Angular,React或Ember之类的框架。在那4年中,这项技术取得了长足的进步,尽管我对React或Angular的偏见要比对jQuery或YUI的偏见要少得多,但今天仍然存在相同的想法-尽管程度较小。
我强烈推荐几天前发表的文章:
- 为什么使用jQuery?单页Web应用程序书的作者Michael S. Mikowski
该文章基本上是对该问题的非常详细的答案。当我在下面编写答案时,如果该功能可用-我肯定会引用它。
我将回答有关jQuery的问题,但这些是我听到的反对使用YUI,Prototype,Dojo,Ext和其他一些参数的参数。我听到的主要论点:
文件大小,实际上在jQuery 3.2.1情况下为84.6 KB-可能比一般网站上的徽标小,并且可以通过Google的CDN提供,而CDN可能已经在大多数访问者的缓存中了。由于使用jQuery始终意味着您自己的JavaScript文件的文件较小,因此即使浏览器缓存中尚未包含jQuery,它实际上也意味着下载量较小。
速度-编写纯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库。也许有一天,没有人会记得我们曾经在应用程序级别上与原始DOM API进行手动交互,就像现在没有人记得我们曾经使用原始的,未经修饰的,难以理解的十六进制数字编写程序一样。
不使用框架的一个原因-这是一个极端的情况-是在为另一个网站(例如横幅)编写可嵌入代码时。任意插入某个复杂的库或另一个库将污染名称空间,并可能破坏其他人的站点。并不是说我不会放任一些广告客户去尝试,这是烂摊子,但我离题了……
我不赞成在已有框架且功能相同的情况下添加框架。我经常看到这一切,这是我的宠物恨,我认为这是毫无根据的膨胀。这完全是另一个问题。
除此之外,我无法想到没有理由的理由。
文件大小-但实际上,除此之外,跨平台的javascript和浏览器差异绝对是天赐之物。您将有一些非常好的理由不希望它出现在您的工具箱中(或者成为一个基础主义者的白痴)。
无论如何,我喜欢jQuery,但是有一些不使用jQuery的原因:
因为通常这是不必要的。如果我想做的只是验证某些输入,或在某些字段上加亮,则编写简单的javascript / dom代码同样容易。jQuery在这种简单情况下并没有真正的帮助,所以问题应该是为什么要使用它?
显然,在许多情况下,它非常有用,但有时人们似乎也没有任何真正的理由使用它。