The best place to put <script>
tag is before closing </body>
tag, so the downloading and executing it doesn't block the browser to parse the html in document,
Also loading the js files externally has it's own advantages like it will be cached by browsers and can speed up page load times, it separates the HTML and JavaScript code and help to manage the code base better.
but modern browsers also support some other optimal ways like async
and defer
to load external javascript
files.
Normally HTML page execution starts line by line. When an external JavaScript element is encountered, HTML parsing is stopped until a JavaScript is download and ready for execution. This normal page execution can be changed using defer
and async
attribute.
Defer
When a defer attribute is used, JavaScript is downloaded parallelly with HTML parsing but will be execute only after full HTML parsing is done.
<script src="/local-js-path/myScript.js" defer></script>
Async
When async attribute is used, JavaScript is downloaded as soon as the script is encountered and after the download, it will be executed asynchronously (parallelly) along with HTML parsing.
<script src="/local-js-path/myScript.js" async></script>
async
.async
, both will rundefer
for both:defer
, then
script1 is guaranteed to execute first,async
then use your script with no attributes and place it
above all the async
scripts.reference:knowledgehills.com