Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否值得收集jQuery相关脚本以在文档末尾运行它们?_Javascript_Jquery_Performance - Fatal编程技术网

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

Javascript 是否值得收集jQuery相关脚本以在文档末尾运行它们?,javascript,jquery,performance,Javascript,Jquery,Performance,我想将jQuery放在关闭标记之前,就像推荐的那样。但是因为我使用的是内容管理系统,所以需要jQuery的内联脚本将在结束body标记之前执行 我现在的问题是:是否值得收集数组中基于jQuery的脚本,并在加载jQuery时在文档末尾运行它们,还是只在head部分加载jQuery?只需在head中加载jQuery,它将在第一次加载后缓存,之后不会减慢任何速度 其他的一切听起来都太过分了,我不确定性能上的提升是否会有那么大的意义来证明额外的工作是合理的 有时,如果页面底部的javascript加载

我想将jQuery放在关闭标记之前,就像推荐的那样。但是因为我使用的是内容管理系统,所以需要jQuery的内联脚本将在结束body标记之前执行


我现在的问题是:是否值得收集数组中基于jQuery的脚本,并在加载jQuery时在文档末尾运行它们,还是只在head部分加载jQuery?

只需在head中加载jQuery,它将在第一次加载后缓存,之后不会减慢任何速度

其他的一切听起来都太过分了,我不确定性能上的提升是否会有那么大的意义来证明额外的工作是合理的


有时,如果页面底部的javascript加载速度较慢,则可能需要更长的时间来加载,这意味着没有javascript的可视页面可能会可见,并且无法为用户提供如此好的体验。

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

其他的一切听起来都太过分了,我不确定性能上的提升是否会有那么大的意义来证明额外的工作是合理的

有时,如果页面底部的javascript加载速度较慢,则可能需要更长的时间来加载,这意味着没有javascript的可视页面可能会可见,并且无法为用户提供如此好的体验。

您可以采用

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

window.q=[];
window.$=function(f){
  q.push(f);
};
加载jQuery后,您将把所有函数传递给real$.ready函数

$.each(q,function(index,f){
  $(f)
});
通过这种方式,您将能够在包含jquery库之前安全地包含jquery代码

如果这比在头部加载jQuery更好,那么这可能取决于您必须将多少代码推入q临时函数

放入节中的jQuery将需要一个单独的阻塞脚本。但是,如果在文档中的任何地方都有大量代码要注入,那么可能会有大量阻止脚本停止渲染过程

相反,在dom就绪事件之后加载大量脚本可以轻松地使页面加载更快,因此这种方法更好,好处也更明显

因此,没有一个对所有代码和所有页面都有效的明确答案:即使这种技术通常是好的和可取的,因为您有尽可能晚的脚本执行的好处,您也应该对这两种方法进行一些测试,并查看加载和呈现时间。文章开头对性能进行了一些考虑,但也解释了stackoverflow没有使用它的原因。

您可以采用

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

window.q=[];
window.$=function(f){
  q.push(f);
};
加载jQuery后,您将把所有函数传递给real$.ready函数

$.each(q,function(index,f){
  $(f)
});
通过这种方式,您将能够在包含jquery库之前安全地包含jquery代码

如果这比在头部加载jQuery更好,那么这可能取决于您必须将多少代码推入q临时函数

放入节中的jQuery将需要一个单独的阻塞脚本。但是,如果在文档中的任何地方都有大量代码要注入,那么可能会有大量阻止脚本停止渲染过程

相反,在dom就绪事件之后加载大量脚本可以轻松地使页面加载更快,因此这种方法更好,好处也更明显


因此,没有一个对所有代码和所有页面都有效的明确答案:即使这种技术通常是好的和可取的,因为您有尽可能晚的脚本执行的好处,您也应该对这两种方法进行一些测试,并查看加载和呈现时间。文章开头对性能进行了一些考虑,但也解释了stackoverflow没有使用它的原因。

我们希望访问者尽快看到可见内容,而将jQuery放在头上只会延迟这一过程。每个人都是如此,但如果你像FB、Google这样的网站,Youtube和其他网站在他们的头脑中有JS,当然,并不是所有需要加载的JS。当脚本集合必须在每个页面加载上运行时,性能只会受到一次影响,然后会被缓存,从而影响每个页面的性能。有时,它会找到正确的平衡。大型网站通常使用不同的优化技术,例如,谷歌将大量的JS嵌入,这是许多web开发人员还没有准备好的——我们仍然太习惯于以方便我们的方式构建网站,而不是以给访问者最佳体验的方式。jQuery可能是
缓存第二个页面,但访问者仍然必须加载第一个页面,然后才能访问该页面,并且无论它位于顶部还是底部,JS仍然必须在每个页面上执行。顺便说一句,req.js看起来很有趣-是什么让你决定编写自己的加载器?当然,最初的提问者有一个CMS的问题,即想要将js内联-太多的CMS会鼓励坏的做法。@AndyDavies优化是一个有趣的话题:req.js主要是为了好玩,并且有一些非常基本的工具作为模块处理对象。我只是喜欢构建工具,老实说,我一般不使用,我只是喜欢这个过程。我们希望访问者尽快看到可见的内容,而把jQuery放在头上只会延迟这个过程。每个人都一样,但如果你像FB、谷歌这样的网站,Youtube和其他网站在他们的头脑中有JS,当然,并不是所有需要加载的JS。当脚本集合必须在每个页面加载上运行时,性能只会受到一次影响,然后会被缓存,从而影响每个页面的性能。有时,它会找到正确的平衡。大型网站通常使用不同的优化技术,例如,谷歌将大量的JS嵌入,这是许多web开发人员还没有准备好的——我们仍然太习惯于以方便我们的方式构建网站,而不是以给访问者最佳体验的方式。jQuery可以缓存到第二个页面,但是访问者仍然必须在到达第一个页面之前加载第一个页面,并且无论它位于顶部还是底部,JS仍然必须在每个页面上执行。顺便说一句,req.js看起来很有趣-是什么让你决定编写自己的加载器?当然,最初的提问者有一个CMS的问题,即想要将js内联-太多的CMS会鼓励坏的做法。@AndyDavies优化是一个有趣的话题:req.js主要是为了好玩,并且有一些非常基本的工具作为模块处理对象。我只是喜欢建筑工具,老实说,我一般不使用,我只是喜欢这个过程。谢谢。不过,这与我的方法非常相似。但你还没有回答我的问题是否值得。我不知道收集和循环函数是否比在头部加载jQ更糟糕。谢谢。不过,这与我的方法非常相似。但你还没有回答我的问题是否值得。我不知道收集和循环函数是否比在头部加载jQ更糟糕。