多个与单个脚本标签

在使用单个脚本标记和embedded代码之间还是使用具有相同代码的多个脚本标记遍布整个HTML之间有什么区别(性能,最佳实践等)?

例如:

<script> foo(); </script> ... <script> bar(); </script> 

与:

 <script> foo(); bar(); </script> 

谢谢

像你所引用的内联脚本,不太可能有太大的差别; 但是,每当浏览器的HTMLparsing器遇到一个script标记,它:

  • 来到一个急刹车
  • 在标签中build立一个string,直到第一次看到string"</script>"
  • 将文本传递给JavaScript解释器的手,在执行document.write时监听解释器的输出
  • 等待翻译完成
  • 将收到的累积输出插入到parsingstream中
  • 继续parsing

所以增加这个序列发生的次数理论上可以增加你的页面加载时间。 它也会影响parsing器在令牌stream中“向前看”的程度,这可能会使效率降低。

所有这些听起来都非常有戏剧性,但是您必须在您关心的各种浏览器中剖析真实网页,以确定它是否具有真实世界的影响力。

所以总的来说,尽可能地把它们合并起来。 如果你不能合理地结合一对夫妻,除非你看到现实世界的问题,否则不要太担心。

以上是内联脚本。 当然,如果你有几个script标签引用了一堆外部JavaScript文件,那么你也会遇到这样的问题:每个文件都必须被下载,而启动一个HTTP请求是相当昂贵的事情(比较而言),所以最好在很大程度上,将这些文件合并为一个文件。

其他一些事情要考虑:

  • 在整个HTML中散布大量script标记可能会使脚本难以维护
  • 把你的HTML和脚本分离成单独的文件可以帮助你限制它们耦合的程度,从而帮助维护
  • 将脚本放在单独的文件中,可以通过缩小器/压缩器/打包器运行该文件,最大限度地减less代码的大小并删除注释,从而使您可以自由地对源代码进行评论,因为知道这些评论将是私密的
  • 把你的脚本放到外部文件中让你有机会把function分开,然后把它们合并成一个页面文件(压缩/缩小/压缩),以便高效地传送给浏览器

更多:

  • YUI的“加快您的网站的最佳实践”
  • Google的“networking性能最佳实践”

在我看来,尽可能地结合你的脚本更好。 有些浏览器在执行脚本块时必须暂停渲染。 检查出答案在: Javascript性能:多个脚本块VS单块大块

到目前为止,所有的JavaScript代码都在一个标签中,这并不是必须的。

您可以在文档中包含尽可能多的标签。

标签在遇到时会被处理。

希望这可以帮助。

有人认为,最好的做法是将所有脚本合并到一个脚本块或单个脚本文件中,只加载真正需要的javascript,并尽可能晚地加载,以免减慢html的渲染速度。

除此之外,我确信使用单个脚本块加载比使用多个脚本块要快,因为它们必须单独进行评估。 然而,这种差异可能是不可识别的。