如果我将JavaScript保持在底部或者将JavaScript保存在document.ready中的中,那么它们是一样的吗?

如果我将JavaScript代码保留在底部或将JavaScript代码保存在document.ready中的 ,那两者是否相同?

我对这两种方法感到困惑, http://api.jquery.com/ready/和http://developer.yahoo.com/performance/rules.html#js_bottom 。

将JavaScript代码置于底部(就在之前)是否有任何好处,即使我将代码保留在内部也是如此。

  $(document).ready(function() { // code here }); 

随着JavaScript的附加

    

一般情况下,您应该将您的Javascript文件放在HTML文件的底部。

如果您使用“经典” 标记文件,那就更为重要。 大多数浏览器(甚至是现代浏览器)都会在加载和执行javascript时阻止UI thread ,从而阻止HTML markup的渲染过程。

这反过来意味着,如果您在页面顶部加载了相当数量的Javascript,则用户将暂停“慢速”加载页面,因为所有脚本加载 ,他将看到整个标记执行。

为了使这个问题更严重,大多数浏览器都不会以并行模式下载javascript文件。 如果您有这样的事情:

    

你的浏览器会

  • 加载file1.js
  • 执行file1.js
  • 加载file2.js
  • 执行file2.js
  • 加载file3.js
  • 执行file3.js

在这样做时, UI thread和呈现过程都被阻止。

Chrome这样的Chrome最终开始以并行模式加载脚本文件,这使得整个问题不再成为一个问题。

“解决”该问题的另一种方法是使用dynamic script tag insertion 。 这基本上意味着您只能在标记上加载一个javascript文件。 然后,此(加载程序)脚本动态创建标记并将其插入到标记中。 这是同步的,并且在性能方面更好。

在您能够访问代码方面,它们将加载所有相同的内容。

差异在于感知页面的加载速度。 如果javascript是最后一个,它将不会阻止任何试图下载的CSS,它应始终位于顶部,并且不会阻止任何需要下载的图像。

浏览器只会在HTML中找到它们时询问项目,但它们只有有限数量的下载流(在现代浏览器中约为10),所以如果你对图像/ css和JS做了很多请求,那么就会失去和感知到的页面加载速度/用户体验将会受到影响。

它们与构建DOM树时触发ready事件不同,而页面末尾的脚本实际上可能在之后执行。

无论哪种方式,它们都是应用程序执行的安全入口点。

雅虎! 开发者网站说,如果你把JavaScript放在页面的底部,它就不会阻止浏览器加载其他资源。 这将使页面的初始加载更快。

jQuery指定了在整个页面加载时加载的函数。

如果您有一个在页面加载时执行的function,无论您是将其包含在还是在页面底部,它都将同时执行。

在决定放置它的位置时,考虑JavaScript在页面上实际执行的操作非常重要。 在大多数情况下,加载和运行JavaScript所花费的时间使得将它放在页面末尾更合乎逻辑。 但是,如果页面呈现本身依赖于Ajax调用或类似,则可能不是这种情况。

这里有关于document.ready()的主题的一个很好的阅读不适合所有JS。

如果您使用document.ready标记的位置不涉及您的脚本。 放在之前,似乎JavaScript收费更快,但我不确定。

即使HTML文档底部的脚本,DOM也可能无法完全加载。 脚本上方的所有封闭元素通常都已准备就绪,在极端情况下可能需要DOM就绪事件。