我正在阅读一个教程,作者提到要在HTML中的结束body标记(</body>)附近包含Javascript文件.
我想知道我不应该在head部分中声明/定义JavaScript包含哪些类型的功能?对我来说,在结束body标记附近包含像Google Analytics这样的JavaScript是有道理的.在结束body标记附近定义JavaScript包含时应该注意哪些地方?
cle*_*tus 39
通常会争辩说,出于速度目的,您应该将脚本标记放在文档的末尾(在关闭正文标记之前).虽然这会导致最快的页面加载,但它有一些严重的缺点.
首先,网页开发的一个常见习惯是将头文件,页脚文件和中间内容放在一起.为了将不必要的Javascript保持在最低限度,您通常希望将代码段放在单独的页面中.
例如,如果在文档的末尾包含jquery,则必须在此之后执行 jquery代码片段(如文档准备工作).从发展的角度来看,这可能很尴尬.
其次,根据我的经验,由于页面加载速度较快,您最终可能会注意到某些效果正在应用,因为页面在应用时已经加载.
例如,如果您将一个表放在文档中,并且在正文关闭标记之前放置:
$(function() {
$("tr:nth-child(odd)").addClass("odd");
});
Run Code Online (Sandbox Code Playgroud)
通过适当的样式,应用的效果通常是可见的.我个人认为这可能会导致糟糕的用户体验.我常常想你最好有页面加载速度略慢(通过把脚本在顶部)如果你没有得到令人不安的视觉效果.
我通常提倡有效的缓存策略,因此您只需在更改时下载Javascript文件,如在PHP中使用Supercharging Javascript(但原则适用于任何语言,而不仅仅是PHP),并且仍然将脚本放在顶部.它更方便.
ska*_*man 12
在雅虎YSlow的工具有建议在此:
脚本引起的问题是它们阻止了并行下载.HTTP/1.1规范建议浏览器每个主机名并行下载不超过两个组件.如果您从多个主机名提供图像,则可以并行执行两次以上的下载.但是,在下载脚本时,即使在不同的主机名上,浏览器也不会启动任何其他下载.
在某些情况下,将脚本移到底部并不容易.例如,如果脚本使用document.write插入页面内容的一部分,则无法在页面中向下移动.可能还存在范围问题.在许多情况下,有办法解决这些问题.
经常出现的另一种建议是使用延迟脚本.DEFER属性指示脚本不包含document.write,并且是浏览器可以继续呈现的线索.不幸的是,Firefox不支持DEFER属性.在Internet Explorer中,脚本可能会延迟,但不是所需的.如果可以延迟脚本,也可以将其移动到页面底部.这将使您的网页加载速度更快.
Bry*_*isi 12
通过将它们放入<head/>您强制浏览器下载文件,然后才能呈现页面.这导致感知的加载时间减慢.
通过将它们放在页脚中,就在关闭正文标记之前,浏览器将不会加载它们,直到它到达解析HTML的那一点.这意味着脚本将在页面加载过程中稍后运行,但不会阻止资产下载和呈现过程.
最有效的取决于您以及您如何开发代码.
| 归档时间: |
|
| 查看次数: |
18878 次 |
| 最近记录: |