1. 客户端容器
(1)浏览器架构
- 浏览器架构演进
1. 单进程架构:所有模块运行在同一个进程里,包含网络,插件,javascript运行环境等;
2. 多进程架构:主进程,网络进程,渲染进程,GPU进程,插件进程;
3. 面向服务架构:将原来的UI,数据库,文件,设备,网络等,作为一个独立的基础服务
(2)渲染进程
- 常见的浏览器内核
Trident,Gecko,Webkit,Blink,Edge,Trident+Webkit(Blink);
多线程架构:内部是多线程实现,主要负责页面渲染,脚本执行,事件处理,网络请求等;
- 多线程工作流程:
1.网络线程负责加载网页资源
2.JS引擎解析JS脚本并且执行
3.JS解析引擎空闲时,渲染线程立即工作
4.用户交互,定时器操作等产生回调函数放入任务队列中
5.事件线程进行事件循环,将队列里的任务取出交给JS引擎执行
(3)Chrome运行原理
- 输入处理
1. 用户Url框输入内容后,UI线程回判断输入的是一个URL地址呢,还是一个query查询条件
2. 如果是URL,直接请求站点资源
3. 如果是query,将输入发送给搜索引擎
- 开始导航
1. 当用户按下回车,UI线程通知网络线程发起一个网络请求,来获取站点内容
2. 请求过程中,tab处于loading状态
-
读取响应
-
寻找渲染进程
-
资源加载
(4)跨端容器
为什么被需要?
1. 开发成本,效率
2. 一致性体验
3. 前端开发生态
- Webview
1. webview,即网页视图,用于加载网页Url,并展示其内容的控件
2. 可以内嵌在移动端app内,实现前端的混合开发,大多数混合框架都是基于webview的二次开发;比如lonic,Cordova;
使用Webview的优势:
1. 一次性开发,处处使用,学习成本低
2. 随时发布,即时更新,不用下载安装包
3. 移动设备性能不断提升,性能有保障
- 4. 通过JSBridge和原生系统交互,实现复杂功能