客户端容器:web浏览器及跨端方案
1. 浏览器架构
2. 渲染进程
3. Chrome运行原理
4. 跨段容器
1 浏览器架构演进:
单进程(所有模块在同一个进程里),多进程(主进程,网络进程,渲染进程,GPU进程,插件进程),面向服务架构(将原来的UI,数据库,文件,设备,网络等作为一个独立的基础服务)
浏览器构架(任务管理器
单进程架构:受硬件限制,其节约资源
服务架构有潜力替代多进程架构
常见浏览器内核:
2 渲染进程
多线程构架
内部是多线程实现,主要负责页面渲染,脚本执行,事件处理,网络请求等
JS引擎
解析执行JS
XML解析生成渲染树,显示在屏幕
桥接方式通信
网络线程负责加载网页资源
JS引擎解析JS脚本并且执行
JS解析引擎空闲时,渲染线程进行工作
用户交互,定时器操作等产生回调函数放入任务队列中
事件线程进行事件循环,将队列里的任务取出来交给JS引擎执行
Chrome运行原理:读取响应
网络线程收到http响应之后,先检查响应头的媒体类型
如果相应主体是一个HTML文件,浏览器将内容交给渲染进程处理
如果拿到的是zip exe等,则交给下载管理器处理
构建渲染树:
构建DOM,将HTML文本转化为浏览器能够理解的结构
构建CSSOM树,浏览器同样不认识css,需要将其转化为可理解的CSSOM
构架渲染树,渲染树是DOM和CSSOM树的结合
页面绘制
构建图层:为特定节点生成专用图层
绘制图层:一个图层分成很多绘制指令,然后将这些指令按顺序组成一个绘制列表,交给合成线程
合成线程接受指令生成图块
栅格线将图块进行栅格化
显示在屏幕上
首屏优化:
压缩,分包,删除无用代码
静态资源分离
JS脚本非阻塞加载
缓存策略
SSR
预制loading 骨架屏
渲染优化:GPU加速,减少回流、重绘,离屏渲染,懒加载
JS优化:防止内存泄漏,循环尽早break,合理闭包,减少dom访问,防抖节流,web workers
跨端:开发成本、效率,一致性体验,前端开发生态
跨段容器webview native通信
JS环境中提供通信的JSBridge
Native端提供SDK响应JSBridge发出的调用
前端和客户端分别实现对应功能模块
//我用泪水在海岸上书写你的名字
//在逝水似的年华里为你唱歌
//我的心把她的波浪在世界的海岸上冲激着
//以热泪在上边写着她的题记
//一个忧郁的声音
//筑巢于逝水似的年华中
//它在夜里向我唱道
//*******************
//童年的黎明,死亡的夜晚