出于性能原因删除 jQuery 是合理的

Removing jQuery for performance reasons justified?

本文关键字:jQuery 删除 于性能 性能      更新时间:2023-09-26

我正在做一个新项目,我们的工作是重写一个在移动设备上存在性能问题的电子商务网站。

我们正在基于更面向对象/模块化的架构重写javascript,我认为这很棒!然而,我的团队负责人说我们应该删除所有的jQuery调用,并替换为javascript,如domElem.querySelectorAll(query(,它具有更好的性能。我知道jQuery在后台进行某种缓存,这可能会产生内存问题。

我对此有点怀疑,首先是因为这似乎是"过早优化"的情况,也就是说,我们应该在重写任何东西之前先找到瓶颈。其次,我在互联网上没有发现任何说jQuery存在严重性能问题的内容。

当前网站确实有很多重叠的 dom 分支查询,我认为这会产生很多冗余。那就是发生了太多的查询,在我们的新架构方法中,我们将对象/模块限制为更少的 dom 查询和更有针对性的 dom 查询,这很棒。这确实需要重写。

但是无论我们是否使用 domElem.querySelector(query( 或 $(domElem(.find(query(,我都看不出有什么区别。我的想法对吗?

一些测试在这里完成(也检查其他修订版(。这里对使用 jquery 而不是 javascript 的利弊进行了很好的详细讨论。

还想指出的是,jquery不对选择器进行任何缓存。

由于一直使用Javascript框架,我们经常忘记的是jQuery不是一个框架。

显然,如果你使用 jQuery '$' 对象并使用直接 DOM 方法(如 getElementById(执行完全相同的单运算符操作,后者将明显更快,因为 jQuery 本身是用 Javascript 编写的,并且做了很多背景工作。

但是,作为开发人员,没有什么(代码可读性除外(阻止您将jQuery与纯Javascript结合使用:尽可能使用纯Javascript,并且仅使用提供复杂功能并需要一些时间从头开始编写和优化的jQuery函数。jQuery中有很多这样的功能:提供独立于浏览器的css,序列化对象以及做许多其他很酷的事情。

这取决于应用程序,但通常性能问题与设计不良的算法有关,而不是jQuery的使用。

无论如何,如果你的应用程序做了大量的DOM操作,那么使用普通的Javascript重写它并进行测试可能是值得的。保留库,只是不要将其用于无需它即可轻松编写的简单操作。

如果您的应用程序严重依赖具有复杂功能的 jQuery 函数,那么删除它是不可能的。

我自己使用这种组合方法:所有用Javascript编写的简单内容,带有jQuery函数,用于难以实现的东西。

此外,如果应用程序遇到性能问题,一个好地方是 DOM 操作。与Javascript中的几乎所有其他操作相比,这些操作非常繁重。您可以通过将多个操作合二为一,使用一个构造函数构建已完成的对象来减少时间,而不是创建空对象并逐个分配属性等。

抱歉,如果答案有点模糊,但在这种情况下,如果不查看代码并运行测试,就很难准确。

让我引用鲍勃叔叔关于这个讨论的话"架构是关于意图的,我们已经把它变成了关于框架和细节">

需要仔细考虑过早的优化。

  • 它们通常会导致不容易还原的体系结构决策。
  • 他们
  • 引入了通常特定于他们解决的问题的代码优化,这使得代码不那么抽象,因此很难维护,并且更复杂,因此容易出现更多的错误。
  • 它们往往是偏见而不是客观的,有时与其他替代方案没有任何真正的比较。
  • 他们试图解决的问题往往被高估,甚至不存在。

我不是 Web 开发方面的专家,但如果可能的话,您应该始终通过关注点分离和良好的抽象来推动这种决策

例如,在生成java脚本代码的部分,您可以抽象JavaScriptWriter,并使用不同的框架。这样,您就可以在开始时使用JQuery,测试系统,然后才更换您知道效率低下的部件。