将jQuery移动到body标记的末尾?

我的朋友读了一篇文章,其中提到将所有JavaScript文件移动到结束体标记( )的末尾,将提高网页的性能。

我已将所有JS文件移到最后,除了JQuery和JS文件,它们将事件附加到页面上的元素,如下所示;

 $(document).ready(function(){ //submit data $("#create_video").click(function(){ //... }); }); 

但他说要将jQuery库文件移到body标签的末尾。

我不认为这是可能的,因为我使用jQuery选择器将许多事件附加到加载页面元素,并且要使用jQuery选择器,首先必须加载jQuery库。

是否可以在关闭body标签( )之前将JQuery库文件移动到页面末尾?

谢谢

$(document).ready函数说在DOM完成实例化之前不会运行 – 所以只要首先加载JQuery库,就可以将它移到body之后。 非常规和一些假设可能不再正确,但没关系。

将所有js包括移动到页面底部是标准做法。 这是因为当浏览器加载脚本时,它不会产生新的线程来执行此操作,因此基本上浏览器将等到它加载脚本后再继续下一行。

这对您的用户意味着他们将看到一个空白屏幕。 让他们看到完整的(ish)页面要好得多,因为它看起来并没有停滞不前。

请记住,在调用$(...)函数之前必须加载jQuery JavaScript文件。

使用“Dom Ready Queue”收集加载jQuery并且DOM准备好后要执行的函数。

例:

      ... 
...

文章要求您将脚本移到底部的原因是允许首先下载其他工件。 (css&images,这将加快明显的渲染时间)

这是因为HTTP 1.1建议每个主机名只下载2个项目。 并且你肯定希望你的css文件是下载的第一个文件之一,而不是javascript可能使网站看起来渲染速度较慢(仅仅是因为浏览器还没有得到css文件而且不确定它应该用html做什么)

但是,如果您使用谷歌来托管您的jQuery,那么它将并行下载,并否定将其移动到页面底部的任何理由。

或者,您可以设置第二个主机名来托管静态内容(例如css / scripts / images)。

但谷歌已经为你完成了艰苦的工作,所以如果它适合的话,使用它是有道理的。 🙂

问:为什么我经常在(x)HTML文档中关闭body元素之前看到编写/包含的JavaScript?

在浏览器将HTML元素加载到DOM之前,JavaScript无法访问A-DOM元素。 通过将JavaScript放在(x)HTML文档的末尾(在结束体元素之前),您将确保在构造/加载DOM并准备好进行操作时立即调用脚本。 这种方法的一个优点是JavaScript代码在构造DOM之后立即执行,并且可能在onload事件触发之前执行。

通过在(x)HTML文档的header元素中放置操作DOM的代码,JavaScript初学者不断被这种方式绊倒。 这会导致错误,因为尚未构造DOM,因此遍历/操作DOM的JavaScript无法访问它。

从Web浏览器中的JavaScript执行和加载技术

使用不显眼的javascript(将事件监听器添加到元素而不是onclik =“…”等)。 将所有.js文件放在body标签的底部,首先放置主库(在本例中为jQuery),一切都会好的。 你可以使用像bundle fu这样的捆绑器

您将看到加载页面的巨大性能提升。