客户端容器:web浏览器及跨端方案|青训营笔记

38 阅读3分钟

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

1. 浏览器架构

2. 渲染进程

3. Chrome运行原理

4. 跨段容器

 

1 浏览器架构演进:

单进程(所有模块在同一个进程里),多进程(主进程,网络进程,渲染进程,GPU进程,插件进程),面向服务架构(将原来的UI,数据库,文件,设备,网络等作为一个独立的基础服务)

屏幕截图 2023-04-17 221835.png

屏幕截图 2023-04-17 222021.png 浏览器构架(任务管理器

 

单进程架构:受硬件限制,其节约资源

服务架构有潜力替代多进程架构

常见浏览器内核:

屏幕截图 2023-04-17 222434.png

          2 渲染进程

多线程构架

内部是多线程实现,主要负责页面渲染,脚本执行,事件处理,网络请求等

屏幕截图 2023-04-17 222744.png

JS引擎

解析执行JS

XML解析生成渲染树,显示在屏幕

桥接方式通信 屏幕截图 2023-04-17 222951.png  

网络线程负责加载网页资源

JS引擎解析JS脚本并且执行

JS解析引擎空闲时,渲染线程进行工作

用户交互,定时器操作等产生回调函数放入任务队列中

事件线程进行事件循环,将队列里的任务取出来交给JS引擎执行 屏幕截图 2023-04-17 223202.png

 

Chrome运行原理:读取响应

网络线程收到http响应之后,先检查响应头的媒体类型

如果相应主体是一个HTML文件,浏览器将内容交给渲染进程处理

如果拿到的是zip exe等,则交给下载管理器处理

 

构建渲染树:

构建DOM,将HTML文本转化为浏览器能够理解的结构

构建CSSOM树,浏览器同样不认识css,需要将其转化为可理解的CSSOM

构架渲染树,渲染树是DOM和CSSOM树的结合

 

页面绘制

构建图层:为特定节点生成专用图层

绘制图层:一个图层分成很多绘制指令,然后将这些指令按顺序组成一个绘制列表,交给合成线程

合成线程接受指令生成图块

栅格线将图块进行栅格化

显示在屏幕上

 

首屏优化:

压缩,分包,删除无用代码

静态资源分离

JS脚本非阻塞加载

缓存策略

SSR

预制loading 骨架屏

 

渲染优化:GPU加速,减少回流、重绘,离屏渲染,懒加载

 

JS优化:防止内存泄漏,循环尽早break,合理闭包,减少dom访问,防抖节流,web workers

 

跨端:开发成本、效率,一致性体验,前端开发生态

屏幕截图 2023-04-17 225913.png

屏幕截图 2023-04-17 230021.png

屏幕截图 2023-04-17 230701.png 跨段容器webview native通信

JS环境中提供通信的JSBridge

Native端提供SDK响应JSBridge发出的调用

前端和客户端分别实现对应功能模块

 

//我用泪水在海岸上书写你的名字

//在逝水似的年华里为你唱歌

//我的心把她的波浪在世界的海岸上冲激着

//以热泪在上边写着她的题记

//一个忧郁的声音

//筑巢于逝水似的年华中

//它在夜里向我唱道

//*******************

//童年的黎明,死亡的夜晚