webview
概念
- 原生:安卓或者ios的原生开发,发布需要打包整个app,效率较低但是性能更好;
- webH5:跨平台开发,性能较差,但是开发方便,兼容性好;
核心机制:
- 解析 html,css,js
- 隔离的JS Runtime,可以与移动端原生进行通信
- 沙盒,限制调用原生api,比如文件网络等等
- 适配多个平台,比如安卓、ios等等
通信机制
- JSBridge(核心机制)
- 双向通信:调用原生功能、进行数据传递、触发回调函数
- webSockets
- 需要频繁更新的通道
- 建立长通信机制
JSBridge 实现原理
Native -> JS
解释性语言,拼接代码直接调用;
JS -> Native
- URL Schema Native可以直接通过解析url来获取数据,进行相关的操作;
sh
<protocol>://<host>/<path>?<qeury>#fragment
// 我们可以自定义JSBridge通信的URL Schema,比如:
hellobike://showToast?text=hello