JSBridge
1. 引入
jsbridge
是随着 Hybrid App
的流行而产生的一种技术。那么 Hybrid App
是啥?Hybrid App
又称混合App
,即同时使用了前端 web 技术 (js,css,html) 和原生 native 技术 (java,kotlin,swfit,object-c) 进行开发的移动应用。
1.1 混合开发的优缺点
- 优点:开发快,易更新,开发周期短,跨平台
- 缺点:性能问题,兼容性问题
1.2 常见的混合开发框架
- webview渲染:Cordova,uni-app
- 原生渲染:React Native,Weex,Flutter
- 混合渲染:小程序
2. JsBridge
现在很多App的页面,不一定都是原生实现的,可能是通过 webview 直接加载一个线上的 h5 站点。
如点击分享图标,可以把当前页面分享到第三方平台,分享后,web 页面需要知道是否分享成功。
这里就涉及了 native 端和 web 端的通信:native 分享的内容,需要 web 端的 js 进行设置(js -> native);native 分享成功后,需要把消息通知给 js (natvie -> js)。为实现两端的双向通信机制,就需要 jsbridge
技术了。
2.1 Native通知JS
因为 h 5网页是通过原生端的 webview 加载的,所以原生端对当前网页拥有很高的权限:Native 端可以直接在当前 webview 里执行 js 代码。
// web端 function nativeCallback(data) { console.log('data', data); }
我们在 js 的执行环境里定义了一个全局方法 nativeCallback
,native 端可以直接执行nativeCallback(123)
方法,也就把数据传给了 js。
2.2 JS通知Native
native端通过拦截url请求,从而调用原生方法。