是否值得收集与jQuery相关的脚本以在文档末尾运行它们?

时间:2012-04-26 07:50:01

标签: javascript jquery performance

我想在结束</body>之前放置jQuery - 像推荐的标签一样。但由于我使用的是内容管理系统,因此需要jQuery的内联脚本将在结束正文标记之前执行。

我现在的问题是:是否值得在数组中收集基于jQuery的脚本并在加载jQuery时在文档的末尾运行它们(EXAMPLE)或者只是在头部加载jQuery? / p>

2 个答案:

答案 0 :(得分:4)

您可以采用approach described here

我们的想法是尽快在标头中创建一个q全局变量,并使用临时window.$函数来收集所有依赖于jQuery的代码/函数/插件。

window.q=[];
window.$=function(f){
  q.push(f);
};

加载jQuery后,您将把所有函数传递给真正的$.ready函数。

$.each(q,function(index,f){
  $(f)
});

通过这种方式,您将能够在jQuery lib包含之前安全地包含您的jquery代码

如果这比在头部加载jQuery更好,可能取决于你需要多少代码才能进入q临时函数。

jQuery放入<head>部分需要一次阻止script。但是如果你有很多代码要注入文档中的任何地方,你可能会有许多阻止渲染过程的巨大阻塞脚本。

相反,在dom ready事件之后加载了很多脚本,它可以很容易地让你的页面加载更快,所以这种方法更好,效果更明显。

因此,没有一个明确的答案对所有代码和所有页面都有效:即使这种技术总体上是好的和优选的(因为你有一个尽可能晚的脚本执行的好处),你应该永远使用这两种方法进行一些测试,并查看加载和渲染时间。 一开始的文章对性能有一些考虑,但也解释了为什么stackoverflow没有使用它。

答案 1 :(得分:0)

只需在头部加载jQuery,它将在第一次加载后缓存,并且在此之后不会减慢任何速度。

其他一切听起来都会超过顶部,而且我不确定性能的提升是否足以证明额外工作的合理性。

有时候,如果您的网页底部的javascript加载速度很慢,那么加载时间可能会更长,这意味着没有javascript的视觉效果可能会显而易见,并且无法为用户提供良好的体验。