把JavaScript
文件放在HTML
文档的哪个位置?
浏览器渲染页面前会解析HTML
脚本构建DOM
树,在这个过程中,如果遇到一个脚本(script
),就会停下来执行这个脚本,如果这个脚本是引用的外部资源,必须停下来等待这个资源的下载和执行,然后继续解析HTML
。
head
中的JavaScript
文件在页面渲染前执行,会阻塞渲染。
哪些JS
脚本文件放在head
中?
对于需要在DOM
加载之前执行的JavaScript
脚本(同步执行),直接将这些脚本放在<head>
中,并确保这些脚本很小,并且执行速度很快(不通过外部引用,因为会增加网络请求),尽量减少浏览器渲染的阻塞。
怎么解决加载JS
文件时的页面渲染阻塞?
用<script>
标签的async
和defer
属性让JavaScript
文件异步加载,使加载不阻塞HTML
的解析。
-
async
:加载完就立即执行,执行的过程中会阻塞HTML
的解析,执行不保证顺序。 -
defer
:在HTML
文档解析渲染完之后(DOMContentLoaded
之前)执行,按照script
标签的先后顺序执行。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。