我想在结束</body>
之前放置jQuery - 像推荐的标签一样。但由于我使用的是内容管理系统,因此需要jQuery的内联脚本将在结束正文标记之前执行。
我现在的问题是:是否值得在数组中收集基于jQuery的脚本并在加载jQuery时在文档的末尾运行它们(EXAMPLE)或者只是在头部加载jQuery? / p>
答案 0 :(得分:4)
我们的想法是尽快在标头中创建一个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的视觉效果可能会显而易见,并且无法为用户提供良好的体验。