多个与单个脚本标签
在使用单个脚本标记和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的渲染速度。
除此之外,我确信使用单个脚本块加载比使用多个脚本块要快,因为它们必须单独进行评估。 然而,这种差异可能是不可识别的。