2

我正在为一个包含许多 DOM 元素的复杂页面编写 jQuery (我无法控制它)。主要目标浏览器是IE7,我担心它的 JavaScript 引擎的速度。我已经编写的脚本很滞后,并且已尽我所能对性能进行了调整。

我可以编写易于维护和理解的脚本,例如使用单个contains语句。或者我可以通过这个凌乱的 HTML 缩小 DOM 搜索范围来帮助引擎,从而导致更多的复杂性。

在编写 jQuery 脚本时我应该关心浏览器的 JavaScript 引擎的速度吗?

4

8 回答 8

5

jQuery 是用 JavaScript 编写的。所以你应该关心 JavaScript 引擎的速度,因为它也会影响 jQuery 代码的速度。

关于如何编写更高效的 jQuery 代码有很多技巧和窍门。主要原理是了解 jQuery 是如何工作的,选择器如何转换为从 DOM 中选择元素的查询等。

于 2009-09-25T15:20:12.770 回答
2

尽可能尝试使用本机 Javascript 方法而不是 jQuery 方法,您通常会注意到显着的速度改进,尤其是在 IE 中。IE 的 JS 渲染引擎与其他非 sucky 浏览器相比是 SLLLOOOOWWW。

例如,我有一个 AJAX 脚本,它在 FF/Safari 中运行良好,但在 IE 中运行起来就像冷冻糖蜜一样。结果是编写它的开发人员大量使用了 jQuery 的 $.each() 方法从大型 JSON 文件中获取数据。我重写了脚本以使用标准的 JS for() 循环,然后对其进行了一些速度测试,结果表明使用 for() 的速度快了 20 倍。

于 2009-09-25T15:37:14.753 回答
0

是的,但你不应该沉迷于它:)

于 2009-09-25T15:22:52.297 回答
0

我没有遇到过使用 JQuery 或插件(跨浏览器兼容性,非常有用的功能)的好处被速度降低所抵消的单一实例。我有时会处理相当大的网页。

无论如何,您要知道的唯一方法就是尝试一下。首先以最合理的方式编写代码。如果它太慢,那么你可以考虑优化它。

优化 DOM 遍历
http://www.learningjquery.com/2006/12/quick-tip-optimizing-dom-traversal

于 2009-09-25T15:23:32.997 回答
0

包含可能相对较慢,因为我不相信文档模型以任何方式被元素内出现的文本索引。

但是,我不确定尝试过度设计某些东西并优化以进行优化是否明智。选择最简单的方法,如果有问题,可以进行测试,然后进行优化。

于 2009-09-25T15:24:23.290 回答
0

不,您不应该关心它,因为它不应该影响您编写代码的方式。

也就是说,您应该始终编写高效的 Javascript,因为这只是一种很好的做法,而且因为对于大多数网站,您不知道任何特定用户正在运行什么浏览器,所以您不妨假设最坏的情况。

于 2009-09-25T15:32:42.810 回答
0

是的,您应该担心,但幸运的是,jQuery 团队同样担心:

最近对 jQuery 内部的更改(查看最后两张幻灯片)

于 2009-09-25T15:33:30.060 回答
0

不要过度优化,而是尽可能多地优化。

If it's slow, then you really have no choice but to go in there and help jquery out. But then if it's not, then why bother.

于 2009-09-27T05:42:20.020 回答