在所有文档中,我在头部<title>
下面看到了jQuery脚本标记,但是当我进入其他一些网站时(initializr模板是我头脑中的第一个) ,他们把它放到身体的底部(你知道,就在</body>
之前)。
这两个中的哪一个是对的?
答案 0 :(得分:14)
引用YDN Best Practices for Speeding Up Your Web Site:
将脚本放在底部
脚本引起的问题是它们会阻止并行下载。 HTTP / 1.1规范建议浏览器每个主机名并行下载不超过两个组件。如果您从多个主机名提供图像,则可以并行执行两次以上的下载。但是,在下载脚本时,即使在不同的主机名上,浏览器也不会启动任何其他下载。
在某些情况下,将脚本移到底部并不容易。例如,如果脚本使用document.write插入页面内容的一部分,则无法在页面中向下移动。可能还存在范围问题。在许多情况下,有办法解决这些问题。
经常出现的另一个建议是使用延迟脚本。 DEFER属性指示脚本不包含document.write,并且是浏览器可以继续呈现的线索。不幸的是,Firefox不支持DEFER属性。在Internet Explorer中,脚本可能会延迟,但不是所需的。如果可以延迟脚本,也可以将其移动到页面底部。这将使您的网页加载速度更快。
有趣的是,人们过去常常在I should be slapped upside the head for doing that时说I said that in 2009,而现在突然变成了最佳做法......一些进展。
答案 1 :(得分:4)
好吧,我认为您需要将其放在$(document).ready(function() {
内,以便在调用jQuery之前文档已经准备就绪。我个人也在</body>
之前。既然两者都有效,那么是否有“正确”的方式,或者只是个人偏好的问题?
不妨听听专家的意见。
答案 2 :(得分:4)
Steve Souders的书High Performance Web Sites建议在</body>
标记之前放置脚本。您也可以在developer.yahoo.com网站here上找到此文档。 (这是清单中的第四项建议。)
我通常把脚本放在底部,在我的''标签之前,并且几乎没有问题。我注意到这有助于IE7等旧版浏览器的性能比FF3.6,Chrome和IE9等新版浏览器的性能要高得多。较旧的浏览器仅支持2个并行下载,而较新的浏览器支持6个连接。因此,封锁并不明显。
希望这有帮助!
答案 3 :(得分:1)
在底部放置脚本具有性能优势: