18、宏任务和微任务:不是所有任务都是一个待遇在前面几篇文章中,我们介绍了消息队列,并结合消息队列介绍了两种典型的WebAPI——setTimeout和XMLHttpRequest,通过这两个WebAPI我们搞清楚了浏览器的消息循环系统是怎么工作的。不过随着浏览器的应用领域越来越广泛,消息队列中...2026-02-28浏览器工作原理与实践
19、Promise:使用Promise,告别回调函数在[上一篇文章]中我们聊到了微任务是如何工作的,并介绍了MutationObserver是如何利用微任务来权衡性能和效率的。今天我们就接着来聊聊微任务的另外一个应用Promise,DOM/BOM API中新加入的API大多数都是建立在Pro...2026-02-28浏览器工作原理与实践
20、async、await:使用同步的方式去写异步代码在[上篇文章]中,我们介绍了怎么使用Promise来实现回调操作,使用Promise能很好地解决回调地狱的问题,但是这种方式充满了Promise的then()方法,如果处理流程比较复杂的话,那么整段代码将充斥着then,语义化不明显,代码不能很好地表...2026-02-28浏览器工作原理与实践
21、Chrome开发者工具:利用网络面板做性能分析“浏览器中的页面循环系统”模块我们已经介绍完了,循环系统是页面的基础,理解了循环系统能让我们从本质上更好地理解页面的工作方式,加深我们对一些前端概念的理解。 接下来我们就要进入新的模块了,也就是“浏览器中的页面”模块,正如专栏简介中所言,页面是浏览器...2026-02-28浏览器工作原理与实践
22、DOM树:JavaScript是如何影响DOM树构建的在[上一篇文章]中,我们通过开发者工具中的网络面板,介绍了网络请求过程的几种性能指标以及对页面加载的影响。 而在渲染流水线中,后面的步骤都直接或者间接地依赖于DOM结构,所以本文我们就继续沿着网络数据流路径来介绍DOM树是怎么生成的。然后再基于DOM...2026-02-28浏览器工作原理与实践
23、渲染流水线:CSS如何影响首次加载时的白屏时间在[上一篇文章]中我们详细介绍了DOM的生成过程,并结合具体例子分析了JavaScript是如何阻塞DOM生成的。那本文我们就继续深入聊聊渲染流水线中的CSS。因为CSS是页面中非常重要的资源,它决定了页面最终显示出来的效果,并影响着用户对整个网站的...2026-02-28浏览器工作原理与实践