1

我正在看 Douglas Crockfords “ Theory of the DOM ”,他提到我的脚本标签的位置会极大地影响我的应用程序的加载时间。此外,他断言脚本标签应包含在尽可能靠近文档正文的底部。

这是准确的吗?

或者

这个视频过时了吗?(他实际上认为这是他没有早点讲授 DOM 的原因)。

4

5 回答 5

2

Google 同意 Crockford 的观点:

雅虎!还有:

其他 SO 用户也同意:

于 2010-12-14T18:12:25.317 回答
1

包含在标题中的文件甚至在页面的其余部分开始加载之前就已加载。建议您将非必要文件加载到尽可能靠近页面底部的位置,以便可以预先加载页面的其余部分。

您可以将一些 JS 库(例如 LABjs)加载到标头中。然后,它们允许您异步加载所有其他 JS 资产并提供回调,以便在您知道 JS 资产已加载时可以执行其余代码。

于 2010-12-14T18:09:48.087 回答
1

您也可以使用http://labjs.com/

如项目页面所述:

LABjs(加载和阻止 JavaScript)是 Getify Solutions 支持的开源(MIT 许可)项目。LABjs 的核心目的是成为一个通用的按需 JavaScript 加载器,能够随时从任何位置将任何 JavaScript 资源加载到任何页面中。使用 LABjs 加载脚本可减少页面加载期间的资源阻塞,这是优化站点性能的一种简单有效的方法。

默认情况下,LABjs 将以浏览器允许的速度并行加载(并执行)所有脚本。但是,您可以轻松地指定哪些脚本具有执行顺序依赖关系,并且 LABjs 将确保正确的执行顺序。这使得 LABjs 可以安全地用于几乎任何 JavaScript 资源,无论您是否控制/托管它,也无论它是独立的还是更大的资源依赖树的一部分。

使用 LABjs 将取代所有丑陋的“标签汤”——即通常出现在 HTML 页面的末尾或末尾的所有标签。该 API 具有表达性和链接性,可让您指定要加载哪些脚本,以及何时等待(“块”)(如有必要)在继续执行之前执行。API 还可以轻松实现内联代码执行耦合(想想:内联标签)。

LABjs 现在有幸从与 Steve Souders 的合作中受益,并致力于成为优化、灵活、通用脚本加载的最佳解决方案。

于 2010-12-14T18:11:04.973 回答
0

我也听说应该在页面末尾包含 JavaScript,以“希望”确保 DOM 已加载。我相信我不久前在雅虎文档中读到了这个。

于 2010-12-14T18:09:24.340 回答
0

嗯,这是正确的。除非你使用类似'head.js'的东西来并行加载你的javascript文件。哦,而且,有些脚本必须在内容之前。例如,html5-shiv 脚本。

http://headjs.com/

于 2010-12-14T18:06:59.663 回答