- 博客(4)
- 收藏
- 关注
原创 事件循环(消息循环)
所以渲染主线程只负责执行任务,遇到需要等待的任务(计时器、网络、事件监听),任务交给其他线程去处理,自身立即结束任务的执行,转而执行后面的代码。当线程完成时,将事先传递的回调函数包装成任务,加入到消息队列的末尾排队,等待主线程调度执行。(1)每个任务都有一个任务类型,同一个类型的任务必须在一个队列,不同类型的任务可以分属不同的队列。当前Js任务执行中如果涉及渲染,就会生成一个新的渲染任务加到消息队列的末尾进行排队,当前js任务结束后才会调度渲染任务的执行。浏览器进程内部会启动多个线程处理不同的任务。
2024-01-14 11:43:33 385
原创 浏览器渲染原理
如果主线程解析到script位置,会停止解析HTML,转而等待JS文件下载好,并将全局代码解析执行完成后,才能继续解析HTML。如果主线程解析到link位置,此时外部的CSS文件还没有下载解析好,主线程不会等待,继续解析后续的HTML。为了提高解析效率,浏览器在开始解析前,会启动一个预解析的线程,率先下载HTML中的外部CSS文件和外部JS文件。第一步完成后,会得到DOM树和CSSOM树,浏览器的默认样式、内部样式、外部样式行内样式均会包含在CSSOM树种。例如节点的宽高、相对包含块的位置。
2024-01-11 22:52:30 1301
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人