我相信 javascript 可以在任何地方(几乎),但我几乎总是在<head></head>
. 我正在使用 jquery 并想知道它是否由于某种原因必须在 head 标签中,或者如果我移动它是否会破坏某些东西。谢谢你。
编辑:为什么它几乎总是在头部标签中?
我相信 javascript 可以在任何地方(几乎),但我几乎总是在<head></head>
. 我正在使用 jquery 并想知道它是否由于某种原因必须在 head 标签中,或者如果我移动它是否会破坏某些东西。谢谢你。
编辑:为什么它几乎总是在头部标签中?
不,它可以在任何地方。事实上,有时把它放在文档的底部是个好主意。有关原因的解释,请参阅http://developer.yahoo.com/performance/rules.html#js_bottom。
JavaScript 在文档中的任何位置执行。如果将内联 JavaScript 放在正文中,它将在浏览器出现时执行。如果你$(document).ready(...)
用来执行事情,那么定位应该无关紧要。否则,您可能会发现重要的极端情况。一般来说,没有关系。脚本最终出现在head
标签中,主要是出于传统。
基本上,浏览器会停止渲染页面,直到.js
文件完全下载和处理完毕。由于它们在 HTML 到达时逐步呈现页面,因此.js
引用的文件越晚,用户体验就会越好。
所以诀窍是在 中只包含绝对重要的脚本head
,并在页面末尾加载剩余的脚本。
当浏览器读取脚本标签时,一切都会停止,直到它处理完毕。因此,如果您将脚本标签尽可能向下移动,您的页面将呈现得更快 - 理想情况下就在结束正文标签之前。显然,总加载时间将是相同的。
当然,在包含 jQuery 之前,您必须确保实际上不会调用任何 jQuery 函数。
JS 变化如此之快,每周都有新框架出现,每个框架都被其拥护者称为“蜜蜂膝盖”。
Gumbo 说脚本标签可以在任何支持内联元素的地方被引用是正确的,但是选择加载外部 JS 文件或在标签中包含 JS 代码是根据具体情况单独做出的决定。
是的,浏览器在解析时会停止加载 JS,因此,您需要考虑这将如何影响页面加载速度和功能。
截至 2015 年年中(流行的答案是 2009 年 7 月),为页面加载速度提供移动优先级需要对移动/蜂窝桅杆的两个请求限制,这在 3G 下为您提供 28k(2x 14kb(是))有效载荷。您需要考虑 28k 的“绘制到屏幕”(如 Google 所称)。这应该为用户提供足够的页面内容/交互性,以确保他们在正确的页面或正确的轨道上。Jquery 缩小目前是 87.6lkb,所以“只是不会削减芥末!”
这就是为什么大多数移动页面在加载任何东西之前会停留几秒钟,即使是在 4G 上!不允许这样。页面速度是王道,用户在加载 JQuery 文件之前点击后退按钮。在 3G+ 下,28k 有效负载将在 < 1 秒内加载,因此您的页面没有理由在那段时间内开始加载。下次您点击手机上的链接时,请看着加载栏坐等它通过下一页上的所有标签!
不要根据 SO 上 7 年前的帖子来构建您的页面(即使它没有错,只是过时了)。在您尝试加载 6 个为您的页面实现奢华视觉功能和广泛数据绑定的 JS 框架之前,确定需要每段代码的位置并确保用户可以使用页面最重要的方面。
顺便说一句,谷歌更喜欢你把 JS 推到底部,因为谷歌分析代码需要最后加载。
编码前请三思!