Web浏览器以及跨端方案
浏览器架构
- 单进程架构
- 所有模块运行在同一个进程里,包含网络、插件、JavaScript运行环境等。
- 多进程架构
- 主进程、网络进程、GPU进程、插件进程
- 面向服务架构
- 将原来的UI、数据库、文件、设备、网络等,作为一个独立的基础服务。
渲染进程
多线程架构
内部是多线程实现,主要负责页面渲染,脚本执行,事务处理,网络请求。
线程
- JS引擎
- GUI渲染
- 定时器触发
- 网络线程
- 事务触发
多进程工作流程
- 网络线程负责加载网页资源
- JS引擎解析JS脚本并且执行
- JS解析引擎空闲时,渲染线程立即工作
- 用户交互、定时器操作等产生回调函数放入任务队列中
- 事务线程进行事务循环、将队列里的任务取出交给JS引擎执行
Chrome运行原理
如何展示网页
- 浏览器地址输入URL后发生了什么

- 先确定式URL内容还是query查询
- 开始导航
- 读取响应,确定响应主体为HTML还是其他类型文件
- 寻找渲染进程
- 资源加载
- 构建渲染树
- 页面布局
- 页面绘制(图层结构)
前端性能
首屏优化
1.压缩、分包、删除无用代码
2.静态资源分离
3.JS脚本非阻塞加载
4.缓存策略
5.SSR
6.预置loading、骨架屏
渲染优化
1. GPU加速
2.减少回流、重绘
3.离屏渲染
4.懒加载
JS优化
1.防止内存泄漏
2.循环尽早break
3.合理使用闭包
4.减少Dom访问
5.防抖、节流
6.Web Workers
跨端容器
为什么需要跨端
1.开发成本、效率
2.一致性体验
3.前端开发生态
有哪些跨端方案
-
webview
-
小程序
-
RN/WeeX
-
Lynx
-
Flutter
跨端容器-WebView
1.WebvieW,即网页视图,用于加载网页Url,并展 示其内容的控件 2.可以内嵌在移动端App内,实现前端混合开发,大 多数混合框架都是基干Webview的二次开发;比如 lonic、Cordova
跨端容器-使用WebView优势
1.一次开发,处处使用,学习成本低 2.随时发布,即时更新,不用下载安装包 3.移动设备性能不断提升,性能有保障 4.通过JSBridge和原生系统交互,实现复杂功能
跨端容器-WebView使用原生能力
Javascript 调用Native
-
APl注入:Native获取Javascript环境上下文,对其挂载的对象或者方法进行拦截
-
使用Webview URL Scheme 跳转拦截
-
IOs上window.webkit.messageHandler直接通信
Native 调用 Javascript
-
直接通过webview 暴露的 API 执行JS代码
-
IOS webview.stringByEvaluatingJavaScriptFromString
-
Android webview.evaluateJavascript
通信跨端容器-WebView<->Native
-
JS环境中提供通信的 JSBridge
-
Native 端提供 SDK 响应 JSBridqe 发出的调用
-
前端和客户端分别实现对应功能模块
跨端容器-小程序
1.微信、支付宝、百度小程序、小米直达号 2.染层-webview 3.双线程,多webview架构 4.数据通信,Native转发
总结

今天主要介绍了客户端容器的相关知识,包括浏览器架构、渲染进程、Chrome运行原理以及前端性能等方面。在跨端容器方面,介绍了WebView和小程序的使用及优劣。其中,WebView作为一种混合开发的解决方案,可以通过JSBridge和原生系统交互,实现复杂功能;而小程序则采用染层-webview的架构,实现数据通信转发。总的来说,了解客户端容器的相关知识对于前端开发人员具有很大的帮助,可以提高开发效率和用户体验。