使用带有嵌入代码的单个脚本标记,或者使用遍布HTML的相同代码的多个脚本标记之间是否存在任何差异(性能,最佳实践等)?
例如:
<script>
foo();
</script>
...
<script>
bar();
</script>
与
<script>
foo();
bar();
</script>
由于
答案 0 :(得分:41)
使用内联脚本,就像你引用的那样,不太可能存在很多的差异;但是,每次浏览器的HTML解析器遇到script
标记时,它都会:
"</script>"
document.write
因此,增加此序列必须发生的次数,理论上可以增加页面加载时间。它还会影响解析器在令牌流中“向前看”的程度,这可能会降低其效率。
所有这些听起来都非常引人注目,但您必须在您关注的各种浏览器中分析真实页面,以确定它是否会产生真实影响。
总而言之,尽可能合理地将它们组合起来。如果你不能合理地结合一对夫妇,除非你看到现实世界的问题,否则不要太担心它。
以上内容适用于内联脚本。当然,如果你有几个script
标签引用了一堆外部JavaScript文件,你也会遇到每个文件都必须下载的问题,启动HTTP请求是一件昂贵的事情(相对而言)因此,最好将这些组合成一个文件。
还需要考虑其他一些事项:
script
个标签可能会让您难以对脚本进行维护更多:
答案 1 :(得分:2)
在我看来,尽可能地组合脚本更好。某些浏览器在执行脚本块时必须暂停渲染。查看答案:Javascript Performance: Multiple script blocks Vs single bigger block
答案 2 :(得分:2)
到目前为止,所有的JavaScript代码都在一个标签中,不一定是这种情况。
您可以在文档中包含任意数量的标记。
标签会在遇到时进行处理。
希望这有帮助。
答案 3 :(得分:0)
有些人认为最佳做法是将所有脚本组合在一个脚本块或单个脚本文件中,只加载真正需要的javascript并尽可能晚地加载它,以免减慢html的渲染速度。 / p>
除此之外,我确信使用单个脚本块的加载速度比使用多个脚本块的速度快,因为它们必须单独进行评估。然而,这种差异可能无法识别。
答案 4 :(得分:0)
我使用多个标签。一个用于图像幻灯片,另一个用于文本幻灯片,因此我可以在同一网页上同时使用图像幻灯片和文本幻灯片。