Android应用层的开发有几大模块,其中WebView是最重要的模块之一。Android系统的WebView发展历史可谓一波三折,系统WebView开发者肯定费劲心思才换取了今天的局面——应用里的WebView和Chrome表现一致。
webview是什么?
实战:
file协议
加载,这也是hybrid快的原因。优点:
缺点:
适用场景:
hybrid:体验要求高,迭代频繁
h5:单次
的运营活动(如抢红包)或不常用功能
利用了客户端的能力,将h5的dist包缓存到客户端本地,然后通过file协议
来加载资源。
JS-SDK 例如微信开发平台提供的的JS-SDK,由于JavaScript的能力和权限受限,有一些功能必须用原生的调用,比如扫一扫、录音等功能,因此JS-SDK就充当了一个中间连接的作用,在JS中通过使用JS-SDK来调用一些原生App提供的能力。
在hybrid架构之中,原生App与h5通讯的方式是JSBridge
JS和客户端通讯的基本形式,如下图:
前端做好静态页面(html,js,css),将文件交给客户端,客户端拿到前端静态页面后以文件形式存储在app中,客户端在一个webview中使用file://协议
加载静态文件。用户每次打开app,app都去server端看看有没有最新的前端静态文件,如果有就下载下来然后覆盖本地旧的前端静态文件,替换每个客户端的静态文件只能客户端来做,让客户端去server下载最新的静态文件,前端可以维护server的前端静态文件,把最新的前端文件上传给客户端。
什么是JSBridge
JSBridge是JS和Native之间的一种通信方式,也就是定义Native和JS的通信,其中Native只通过一个固定的桥对象调用JS,而JS也只通过固定的桥对象调用Native。
双向通信的通道:
JS 向 Native 发送消息: 调用相关功能、通知 Native 当前 JS 的相关状态等。
Native 向 JS 发送消息: 回溯调用结果、消息推送、通知 JS 当前 Native 的状态等。
H5与Native交互如下图: