14. JS相关概念

2017-08-19  本文已影响0人  Joey的企鹅

CSS和JS在网页中的放置顺序

白屏和FOUC

async与defer的作用和区别

284aec5bb7f16b3ef4e7482110c5ddbb_articlex.jpg

蓝色线代表网络读取,红色线代表执行时间,这俩都是针对脚本的;绿色线代表 HTML 解析。
defer 和 async 在网络读取(下载)这块儿是一样的,都是异步的(相较于 HTML 解析),它俩的差别在于脚本下载完之后何时执行。
defer:脚本延迟到文档解析和显示后执行,有顺序
async:不保证顺序。

网页的渲染机制

  1. 构建DOM树(DOM tree):从上到下解析HTML文档生成DOM节点树(DOM tree),也叫内容树(content tree);
  2. 构建CSSOM(CSS Object Model)树:加载解析样式生成CSSOM树;
  3. 执行JavaScript:加载并执行JavaScript代码(包括内联代码或外联JavaScript文件);
  4. 构建渲染树(render tree):根据DOM树和CSSOM树,生成渲染树(render tree);
    渲染树:按顺序展示在屏幕上的一系列矩形,这些矩形带有字体,颜色和尺寸等视觉属性。
  5. 布局(layout):根据渲染树将节点树的每一个节点布局在屏幕上的正确位置;
  6. 绘制(painting):遍历渲染树绘制所有节点,为每一个节点适用对应的样式,这一过程是通过UI后端模块完成;
流程.png

为了更友好的用户体验,浏览器会尽可能快的展现内容,而不会等到文档所有内容到达才开始解析和构建/布局渲染树,而是每次处理一部分,并展现在屏幕上,这也是为什么我们经常可以看到页面加载的时候内容是从上到下一点一点展现的。

Webkit渲染引擎流程如下图:

Webkit渲染引擎流程.png
上一篇 下一篇

猜你喜欢

热点阅读