客户端容器 & web浏览器 | 青训营笔记

70 阅读2分钟

客户端容器 web浏览器及其跨端方案

关键问题:浏览器是如何运行的?

浏览器架构:单继承架构 => 多进程架构 => 面向服务架构(把与资源打交道的部分抽象成不同的服务)

面向服务架构的出现旨在将浏览器的各个功能模块化,将它们作为独立的服务来运行和维护。在这种架构下,每个服务都可以独立地使用一个或多个进程,根据需求自动扩展或缩减资源


渲染进程(一个tab页)

JS引擎与渲染引擎:

渲染进程多线程工作流程:

  1. 网路线程负责加载网页资源
  2. JS引擎解析JS脚本并执行
  3. JS引擎空闲时,渲染引擎立刻工作
  4. 用户交互、定时器操作等产生回调函数放入任务队列中
  5. 事件线程进行事件循环,将队列里的任务取出交给JS引擎执行

JS引擎与渲染引擎之间通信通常通过浏览器内部的API和事件机制实现:
JS引擎提供了DOM API,使得js代码可以访问和操作DOM树。当js代码需要对DOM树进行操作时(如添加、删除或修改节点),JS引擎会通过浏览器内部的API通知渲染引擎进行相应的操作

渲染树是DOM树和CSSOM树的结合
页面布局

  1. 根据渲染树计算每个节点的位置和大小
  2. 在浏览器页面区域绘制元素边框
  3. 遍历渲染树,将元素以盒模型的形式写入文档流

页面绘制

  1. 构建图层:为特定节点生成专用图层
  2. 绘制图层:一个图层分成很多绘制指令,然后将这些指令按顺序组成一个绘制列表,交给合成线程
  3. 合成线程接受指令生成图块
  4. 栅格线程将图块栅格化(GPU加速)
  5. 展示在屏幕上