javascript 必须在 head 标签中吗?

IT技术 javascript
2021-01-28 18:46:43

我相信 javascript 可以在任何地方(几乎),但我几乎总是在<head></head>. 我正在使用 jquery 并想知道它是否由于某种原因必须在 head 标签中,或者如果我移动它是否会破坏某些东西。谢谢你。

编辑:为什么它几乎总是在头部标签中?

6个回答

不,它可以在任何地方。事实上,有时把它放在文档的底部是个好主意。有关原因的解释,请参阅http://developer.yahoo.com/performance/rules.html#js_bottom

该网站声称将脚本放在文档底部存在潜在的权衡/缺点。声称您网站上的某些元素(例如按钮)可能在您的 javascript 执行之前没有响应。
2021-03-16 18:46:43
这应该是公认的解决方案。它现在被认为是最佳实践。
2021-04-12 18:46:43

JavaScript 在文档中的任何位置执行。如果将内联 JavaScript 放在正文中,它将在浏览器出现时执行。如果你$(document).ready(...)用来执行事情,那么定位应该无关紧要。否则,您可能会发现重要的极端情况。一般来说,没有关系。脚本最终出现在head标签中,主要是出于传统。

我认为将脚本标签放在哪里确实很重要。请参阅 Nate 的帖子 ( stackoverflow.com/questions/1213281/... ),了解为什么将脚本放在页面下方更好。
2021-03-24 18:46:43
但是为了调用 $(document).ready(...),必须先加载 jquery。因此,即使自定义函数本身不是,也需要加载和编译。
2021-04-14 18:46:43

基本上,浏览器会停止渲染页面,直到.js文件完全下载和处理完毕。由于它们在 HTML 到达时逐步呈现页面,因此.js引用的文件越晚,用户体验就会越好。

所以诀窍是在 中只包含绝对重要的脚本head,并在页面末尾加载剩余的脚本

你能删除一个参考链接来异步加载javascript吗?
2021-03-21 18:46:43

当浏览器读取脚本标签时,一切都会停止,直到它处理完毕。因此,如果您将脚本标签尽可能向下移动,您的页面将呈现得更快 - 理想情况下就在结束正文标签之前。显然,总加载时间将是相同的。

当然,在包含 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 推到底部,因为谷歌分析代码需要最后加载。

编码前请三思!

我不确定你要我做什么。也许是一个例子?还是设计图?
2021-04-11 18:46:43
在这里进一步阅读,developers.google.com/ speed/docs/insights/BlockingJS 没有单一的答案,这是评估代码并就所有因素做出决定的问题。
2021-04-11 18:46:43
约翰尼,简而言之,加载外部或放置内联 javascript 需要考虑两个因素,何时需要代码以及它如何影响页面加载速度。这两个因素受移动网络用户的影响很大。我的另一点是关于了解如何加载不需要立即加载的代码会降低不必要地引用阻塞代码的页面加载速度。
2021-04-14 18:46:43