js时间线:浏览器用来记录js执行的状态
loading: init -loading
创建document ,element text节点;生成domtree 结构
document.readyState = loading
---------------
interactive:loading-interactive
解析html结构
css
html
js
html 结构 解析完毕
document.readyState = interactive
DOMContentloaded:addEventlistenear()
异步加载的资源:
img src=
iframe src=
异步数据
complete:interactive-complete
document.readyState = complete
$(document).ready(function(){
DOMContentloaded:
})
js单线程
1、js 执行 会导致 页面html 解析 阻塞
异步处理方式:独立开辟线程(子线程)(间接让js实现了“多线程”)
setTimeout()
setInterval()
ajax
优化:
body
<script>
</script>
js的异步加载:
<script async="async"></script> 下载js异步执行->立即执行
<script defer="defer"></script>下载js异步执行-