客户端容器 | 青训营笔记

32 阅读4分钟

前言

本节课程主要着重介绍浏览器的架构以及运行原理,并以一道八股文为例,讲解在Chrome浏览器里,网页是如何加载并且渲染成我们所见的画面。通过对本节课的学习,你还能了解到在浏览器里JS引擎和渲染引擎如何协同工作,如何从多个角度优化前端的性能体验。再以webview容器为扩展,带你认识一些常见的跨端方案。

浏览器架构

image.png

浏览器架构演进

  1. 单进程架构: 所有模块运行在同一个进程里,包含网络、 插件、JavaScript运行环境等
  2. 多进程架构:主进程、网络进程、渲染进程、GPU进程、插件进程
  3. 面向服务架构:将原来的UI、数据库、文件、设备、网络等,作为一个独立的基础服务

浏览器架构对比

架构类型扩展性安全性稳定性流畅度
单进程架构低,所有模块运行在同一进程里,访问同一块内存区域,数据没有隔离,新增模块可能会影响原有功能低,三方插件可直接访问操作系统里任意资源低,三方插件漏洞或者某个tab页面JavaScript脚本问题可能导致浏览器崩溃卡顿,所有页面运行在同一进程中,开启多个页面时明显卡顿
多进程架构中,各进程分配独立的内存区域有些进程功能较大,耦合度高高,运行在独立沙箱中,不能访问系统敏感资源高,进程相互隔离,当一个页面或者插件崩溃时,不会影响其他进程流畅,每个页面运行在独立的渲染进程中,充分利用系统资源
面向服务架构高,服务模块划分更细,更内聚、耦合性低,易于扩展高,运行在独立沙箱中,不能访问系统敏感资源高,进程相互隔离,当一个页面或者插件崩溃时,不会影响其他进程流畅,每个页面运行在独立的渲染进程中,充分利用系统资源

多进程分工

  1. 浏览器(主进程):主要负责页面展示逻辑,用户交互,子进程管理;包括地址栏、书签、前进、后退、收藏夹等
  2. GPU进程:负责UI绘制,包含整个浏览器全部UI
  3. 网络进程:网络服务进程,负责网络资源加载
  4. 标签页(渲染进程):控制tab内的所有内容,将Html、Css和Java Script转换为用户可交互的网页
  5. 插件进程:控制网站运行的插件,比如flash、 ModHeader等
  6. 其他进程:如上图所示:适用程序Storage/Network/Audio Service 等

渲染进程

JS引擎vs渲染引擎

image.png

  1. 解析执行JS
  2. XML 解析生成渲染树,显示在屏幕
  3. 桥接方式通信

多线程工作流程

image.png

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

跨端容器

为什么需要跨端

  1. 开发成本、效率
  2. 一致性体验 6018
  3. 前端开发生态

image.png

跨端容器-使用WebView优势

  1. 一次开发,处处使用,学习成本低
  2. 随时发布,即时更新,不用下载安装包
  3. 移动设备性能不断提升,性能有保障 4.通过JSBridge和原生 系统交互,实现复杂功能

跨端容器-通用原理

  1. UI组件

  2. 渲染引擎

  3. 逻辑控制引擎

  4. 通信桥梁

  5. 底层API抹平表现差异

image.png

其他

今天的学习就到这里啦!神奇的前端有没有激发你的兴趣呢,快来跟我一起探索吧!

重铸前端荣光,我辈义不容辞!