将JS放在文档头部是否有正当理由?

时间:2012-04-24 09:02:34

标签: javascript html caching html-head

我的意思是:我知道JS只有来自.js文件才会被缓存。此外,在加载(渲染)页面(html)时,必须渲染90%的函数,因此最好在关闭body标记之前放置JS。 (这也可以防止使用document .ready();并且加载页面本身会更快。)

那么,将JS放入<head></head>的优势是什么?期待代码的“顺序”,我不介意这么说实话......

4 个答案:

答案 0 :(得分:3)

<script src>部分中放置<head>标记在语义上是有意义的。它会阻止浏览器呈现任何内容,直到加载脚本,但确保在代码的其余部分(例如正文中)中有一个对象(例如jQuery)。

通常的做法是在头部加载一个轻量级脚本加载库(HeadJsLABjs等),然后懒洋洋地加载的东西和/或按需。

话虽如此,HTML5为脚本标记引入了async属性,并重新引入了defer属性(docs)。因此,您现在有一个非常有效的理由将<script src>标记放在头部分中,因为:

  1. 这很有意义
  2. 在页面加载
  3. 后,脚本仍会加载

答案 1 :(得分:2)

<script>标记会导致两个问题:

  1. 在加载脚本之前,脚本下面的所有内容都不会呈现。
  2. 在脚本完成之前,脚本下面的所有组件都不会开始下载。
  3. 如果你需要在呈现任何内容之前执行一些JavaScript,那么将它放入<head>只是有意义的。

    因此,在页面中尽可能低地放置它会带来更好的用户体验。

答案 2 :(得分:0)

<head>部分中元素的重要之处在于,在<body>开始加载之前,它们已被加载。

这是一个非常有效的功能,它被大量使用(IMO)。

加载必须在加载DOM之前运行的库,脚本必须在<head>部分完成。


  

我会给你一个场景

想象一下,您需要计算屏幕总大小的30%大小并将其分配给内部元素。

这将是愚蠢的,等待元素加载大,然后运行脚本加载再次调整大小。

答案 3 :(得分:0)

将它放在标题中稍微有点语义,但它通常没有任何优点。有时需要 - 例如,使用JavaScript加载字体(使用Google Webfonts之类的东西)必须在标题中完成,否则页面将使用错误的字体呈现然后更改,这对用户来说不太好看。