我正在为一个页面写jQuery,这是一个很多DOM元素的复杂混乱(我无法控制它)。主要目标浏览器是 IE7 ,我担心其JavaScript引擎的速度。我已经写过的脚本是滞后的,并且已经尽最大努力进行了性能调整。
我可以编写易于维护和理解的脚本,例如使用单个contains
语句。或者我可以通过缩小DOM搜索范围来解决引擎问题,从而导致更复杂。
在编写jQuery脚本时,我应该关心浏览器JavaScript引擎的速度吗?
答案 0 :(得分:5)
jQuery是用JavaScript编写的。所以你应该关心JavaScript引擎的速度,因为它也会影响你的jQuery代码的速度。
关于如何编写更高效的jQuery代码,有很多提示和技巧。主要原则是了解jQuery如何工作,如何将选择器转换为从DOM中选择元素的查询等等。
答案 1 :(得分:2)
尝试尽可能使用原生Javascript方法而不是jQuery方法,你通常会注意到速度的显着改善,,特别是在IE中。 IE的JS渲染引擎与其他非糟糕的浏览器相比,SLLLOOOOWWW
例如,我有一个在FF / Safari中运行良好但在IE中像冻结糖蜜一样运行的AJAX脚本。事实证明,编写它的开发人员大量使用jQuery的$ .each()方法从大型JSON文件中获取数据。我重写了脚本以使用标准JS for()循环,然后对它运行一些速度测试表明使用for()的速度提高了两倍。
答案 2 :(得分:0)
是的,但你不应该为此着迷:)
答案 3 :(得分:0)
我没有碰到一个单一的实例,其中使用JQuery或插件的好处(跨浏览器兼容性,非常有用的功能)被速度降低所抵消。我有时会处理相当大的网页。
无论如何,你要知道的唯一方法是尝试。首先以最合理的方式编写代码。如果它太慢,那么你可以寻找优化它。
优化DOM遍历
http://www.learningjquery.com/2006/12/quick-tip-optimizing-dom-traversal
答案 4 :(得分:0)
包含可能相对较慢,因为我不相信文档模型以任何方式被元素内部出现的文本索引。
然而,我不确定尝试过度设计并优化以获得优化是明智之举。如果您遇到问题,请选择最简单的方法,进行测试,然后进行优化。
答案 5 :(得分:0)
不,你不应该关心它,因为它不应该影响你编写代码的方式。
也就是说,你应该总是编写高效的Javascript,因为这只是一个很好的做法,因为对于大多数网站你不知道任何特定用户正在运行什么浏览器,所以你也可以假设最坏的。
答案 6 :(得分:0)
是的,你应该担心,但幸运的是,jQuery团队同样关注:
Recent Changes to jQuery Internals (Check out last two slides)
答案 7 :(得分:0)
不要过度优化,而是根据需要进行优化。
如果它很慢,那么你真的别无选择,只能去那里帮助jquery。但如果不是,那么为什么要这么麻烦。