multiple versus single script tags

亡梦爱人 提交于 2019-11-26 19:26:43

问题


Is there any difference (performance, best practices, etc) between using a single script tag with embedded code in it, or using multiple script tags with the same code spread all over the HTML?

For example:

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

versus:

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

Thanks


回答1:


With inline script like what you quoted, there's unlikely to be much difference; however, every time the browser's HTML parser encounters a script tag, it:

  • Comes to a screeching halt
  • Builds up a string of the the text in the tag up until the first time it sees the string "</script>"
  • Hands that text off to the JavaScript interpreter, listening for output the interpreter sends it when you do a document.write
  • Waits for the interpreter to finish
  • Inserts the accumulated output received into the parsing stream
  • Continues its parsing

So increasing the number of times this sequence has to occur can, in theory, increase your page load time. It also affects the degree to which the parser can "look ahead" in the token stream, which may make it less efficient.

All of which sounds really dramatic, but you'd have to profile a real page in the various browsers you care about to determine whether it had a real-world impact.

So in summary, combine them as much as you reasonably can. If you can't reasonably combine a couple, don't worry about it too much until/unless you see a real-world problem.

The above is for inline script. Naturally, if you have several script tags referring to a bunch of external JavaScript files, you'll also have the issue that each of those files has to be downloaded, and initiating an HTTP request is an expensive thing (comparatively) and so it's best, in a big way, to combine those into a single file.

Some other things to consider:

  • Having lots of script tags scattered throughout your HTML may make it difficult to do maintenance on the script
  • Separating your HTML and script into separate files helps you limit the degree to which they're coupled, again aiding maintenance
  • Putting script in a separate file makes it possible to run that file through minifiers/compressors/packers, minimizing the size of your code and removing comments, thus leaving you free to comment in your source code knowing those comments will be private
  • Putting your scripts into external files gives you the opportunity to keep things separated by functionality, and then combine them into a single file for the page (compressed/minified/packed) for efficient delivery to the browser

More:

  • YUI's "Best Practices for Speeding Up your Web Site"
  • Google's "Web Performance Best Practices"



回答2:


Combining your scripts as much as possible is better in my opinion. Some browsers have to pause rendering while executing script blocks. Check out answer at: Javascript Performance: Multiple script blocks Vs single bigger block




回答3:


Up to this point all of the JavaScript Code was in one tag, this does not need to be the case.

You can have as many tags as you would like in a document.

The tags are processed as they are encountered.

Hope this helps.




回答4:


Some argue that it's best practice is to combine all scripts in a single script block or a single script file, load only the javascript that is really needed and load it as late as possible to not slow down the rendering of html.

Apart from that i am sure that using a single script block loads faster than using multiple script blocks since they have to be evaluated individually. However this difference might not be recognizable.




回答5:


I USE multiple tags. One for Slideshow of Images and another for Slideshow of Texts, so I can have both on the same web page - slideshow of images and slideshow of texts.



来源:https://stackoverflow.com/questions/6451156/multiple-versus-single-script-tags

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!