青训营笔记|客户端容器

106 阅读1分钟

web浏览器以及跨端方案

一、浏览器架构

1、浏览器架构演进

单进程架构:所有模块运行在同一个进程里、包含网络、插件、JavaScript运行环境(流畅和和扩展性不好)

多进程架构:主进程(扩展性差点)

面向服务架构:原来的UI、数据库、文件、设备,独立的(扩展性、安全性、稳定性、流畅度都好)

标签页(渲染进程):控制tab内的所有内容

多进程分工

image.png

2.渲染进程

屏幕截图 2023-04-25 230400.png

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

屏幕截图 2023-04-25 230630.png

JS引擎VS渲染引擎

多线程工作流程

屏幕截图 2023-04-25 230734.png 例题如下

屏幕截图 2023-04-25 230834.png

Chrome运行原理

展示网页

浏览器地址输入URL后发生了什么

输入处理

屏幕截图 2023-04-25 231015.png

开始导航

屏幕截图 2023-04-25 231051.png

读取响应

屏幕截图 2023-04-25 231119.png

寻找渲染进程

屏幕截图 2023-04-25 231151.png

资源加载

屏幕截图 2023-04-25 231216.png

构建渲染树

屏幕截图 2023-04-25 231246.png

页面布局

屏幕截图 2023-04-25 231316.png

页面绘制

屏幕截图 2023-04-25 231330.png

1、首屏优化:压缩、分包、删除无用代码

静态资源分离

JS脚本非租塞加载

缓存策略

SSR

预置loading、骨架屏

2、渲染优化

GPU优化

减少回流、重绘

离屏渲染

懒加载

3、JS优化

防止内存泄漏

循环尽早break

合理使用闭包

减少Dom访问

防抖、节流

Web Workers

4、跨端容器

需要跨端的原因

屏幕截图 2023-04-25 231831.png 方案: webview 小程序 RN/Weex Lynx Flutter

Webview:网页视图,加载网页Url,展示其内容控件

内嵌移动端App内,前端混合开发,混合框架都是基于webview的二次开发,比如:lonic\cordova

分类:

屏幕截图 2023-04-25 232216.png

优势:

屏幕截图 2023-04-25 232241.png

使用原生能力:

屏幕截图 2023-04-25 232557.png

总结:

屏幕截图 2023-04-25 232520.png