客户端容器-web浏览器以及跨端方案 | 青训营笔记

68 阅读2分钟

客户端容器-web浏览器以及跨端方案****

浏览器架构****

主要架构模式介绍:

· 单进程架构:所有模块运行在同一个进程里,包含网络、插件、JavaScript运行环境等

· 多进程架构:主进程、网络进程、渲染进程、GPU进程、插件进程

· 面向服务架构:算是多进程架构的升级版。将原来的UI、数据库、文件、设备、网络等,作为一个独立的基础网络服务

 

为什么会有单进程架构?

早期受到硬件限制,为了节约资源。

面向服务架构是否会替代多进程架构?

有可能会被替代。

渲染进程****

主要包含以下线程:

· 主线程(Main thread)(下载资源、执行js、计算样式、进行布局、绘制合成)

· 光栅线程(Raster thread)

· 合成线程(Compositor thread)

· 工作线程(Worker thread)

 

多线程工作流程****

· 网络线程负责加载网页资源

· JS引擎解析JS脚本并执行

· JS解析引擎空闲时,渲染进程立即工作

· 用户交互、定时器操作等产生回调函数放入任务队列中

· 事件线程进行事件循环,将队列里的任务 取出交给JS引擎执行

跨端容器****

为什么需要跨端****

· 开发成本、效率

· 一致性体验

· 前端开发生态

有哪些跨端方案****

· webview

· 小程序

· RN 、Weex

· Lynx

· Flutter

webview****

Webview,即网页视图,用于加载网页Url,并展示其内容的控件。

可以内嵌在移动端App内,实现前端混合开发,大多数混合框架都是基于Webview的二次开发:比如lonic、Cordova、uniapp。

 

优点:

· 一次开发,处处使用,学习成本低

· 随时发布,即时更新,不用下载安装包

· 移动设备性能不断提升,性能有保障

· 通过JSBridge和原生系统交互,实现复杂功能

Javascript调用Native:

· API注入: Native获取Javascript环境上下文,对其挂载的对象或者方法进行拦截

· 使用Webview URL Scheme跳转拦截

· IOS上window.webkit.messageHandler直接通信

Native调用Javascript:

· 直接通过webview暴露的API执行JS代码

· IOS方法:webview.stringByEvaluatingJavaScriptFromString

· Android方法:webview.evaluateJavascript

Webview 和 Native通信:

1. JS环境中提供通信的JSBridge

2. Native端提供SDK响应JSBridge发出的调用

3. 前端和客户端分别实现对应功能模块