当前位置: 首页 > 面试题库 >

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

贺季同
2023-03-14
问题内容

上下文: 我为一整天整天攻击HTML,Javascript和CSS而 忽略 诸如jQuery( 或其他等效的辅助框架 )之类的工具而
拒绝
使用它们的前端开发人员感到惊讶。我不是在谈论JavaScript专家,而是在乔生产开发人员的日常讨论中谈论。我收到了很多像借口或个人观点的论据,但我认为这些论点没有任何技术上的优点,我想确保自己没有遗漏任何东西。

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

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


问题答案:

年更新:

在2011年的这个答案中,我谈论的是jQuery,YUI或Prototype之类的库。在2015年的今天,推理仍然适用于Angular,React或Ember之类的框架。在那4年中,这项技术取得了长足的进步,尽管我对React或Angular的偏见要比对jQuery或YUI的偏见要少得多,但今天仍然存在相同的想法-尽管程度较小。

2016年更新:

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

  • 为什么使用jQuery?单页Web应用程序_
    书的作者Michael S. Mikowski

该文章基本上是对该问题的非常详细的答案。当我在下面编写答案时,如果该功能可用-我肯定会引用它。

原始答案:

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

  1. 文件大小 ,实际上在jQuery3.2.1情况下为84.6KB可能比一般网站上的徽标小,并且可以通过Google的CDN来提供,而CDN可能已经存在于大多数访问者的缓存中。由于使用jQuery总是意味着您自己的JavaScript文件的文件 较小 ,因此实际上即使没有在浏览器缓存中也意味着下载量 较小

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

  3. “知识产权” -一家公司不敢使用别人的代码-实际上jQuery是开源和免费软件,从您祖母的博客到亚马逊,从Twitter到美国银行,从Google到Microsoft,到处都是使用它,那么任何公司都可以使用它。

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

(*)这是一个简单的示例:getElementById(’someid’)与jQuery(’#someid’)

使用getElementById更快吗?是。当然,每个人都总是检查parentNode以在Blackberry
4.6返回文档中不再存在的节点时捕获,对吗?jQuery确实如此。每个人都处理IE和Opera通过名称而不是ID返回项目的情况,对吗?jQuery确实如此。如果不这样做,那么您的代码就无法移植,并且会引入难以发现的细微错误。getElementById是一个可能发现的最简单的示例-
甚至不让我开始了解事件,AJAX和DOM …

更新:

实际上,有第四个结果是询问为什么有人不想使用jQuery。我忘记将其放在此列表中,因为它并不是真正的答案,而是 缺少使我想起了这件事

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

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



 类似资料:
  • 问题内容: 我见过很多人声称您应该在选择查询中专门为想要的每一列命名。 假设我仍然要使用所有列,为什么我不使用? 即使考虑问题* SQL查询-从视图选择或从视图*选择col1,col2,’colN,我也不认为这是完全相同的副本,因为我正从略有不同的观点着手解决这个问题。 我们的原则之一是在优化之前就不进行优化。考虑到这一点,在被证明是资源问题或架构几乎是固定的之前,似乎应该使用 首选的 方法。众所

  • 在哪些情况下,应该使用? 是否只是为了合法性问题? 如果是,那么问题是什么? 因为我仍然使用开发我的所有项目

  • 问题内容: DataflowAnomalyAnalysis:找到变量“ variable”(行“ n1”-“ n2”)的“ DD”异常。 DataflowAnomalyAnalysis:找到变量“ variable”(行“ n1”-“ n2”)的“ DU”异常。 DD和DU听起来很熟悉…我想在涉及最差的前后条件的测试和分析中说些什么,但我不记得具体情况。 NullAssignment:将Objec

  • 问题内容: 当我尝试运行程序时,出现以下错误 请帮忙 问题答案: 从Javadoc: 如果Java虚拟机找不到声明为native的方法的适当本机语言定义,则抛出该异常。 这是与JNI相关的错误。loadJacobLibrary试图加载名为jacob-1.14.3-x86的本机库,但在java.library.path定义的路径上找不到该库。启动JVM时,应将此路径定义为系统属性。例如 在Windo

  • 在这里抛出RejectedExecutionException是否有其他原因? java.util.concurrent.RejectedExecutionException:任务java.util.concurrent.FutureTask@4194a5f0被java.util.concurrent.ThreadPoolExecutor@41a36e90拒绝[终止,池大小=0,活动线程=0,排队

  • 环境php7.4 数据库mysql5.7 nginx 1.20 安装wordpress经常500,以下是部分错误日志 [05-Feb-2024 03:11:58 UTC] PHP Fatal error: Allowed memory size of 120586240 bytes exhausted (tried to allocate 12288 bytes) in /home/wwwroot