JsBridge的学习

最近做项目遇见了JsBridge,于是乎,去学习了下,发现了不少好东西,这里记录一下

JsBridge一般用于Hybrid模式,什么是Hybrid模式呢?

Hybrid是一种一半原生一半web的开发模式。

原生是指通过指定的开发语言和官方提供的API来对手机端进行开发,比如Android可以通过Java语言调用Google的提供的API进行开发,而iOS则可以通过OC语言调用Apple官方提供的API进行开发。

web是指用HTML5简称H5进行开发的页面。

如果只用原生开发页面,那么你得学习Android和iOS分别提供的两套指定语言,并且开发时你得用两套代码进行编码,学习和维护成本偏高。但由于是原生(语言和API对于Android和iOS是熟人,熟人见面一个眼神,什么都懂),因此原生开发的页面性能是很好的,你几乎不用等待便可以直接打开页面。

如果只用web开发页面,那么你的学习H5一门语言(一招鲜吃遍天),但是由于是web(web对于Android和iOS是陌生人,语言都不通,交流起来很困难),因此web开发的页面性能很差,你每个页面都要等一定时间。

为什么不把2种方式结合起来呢,于是,Hybrid孕育而生。

Hybrid中,原生容器通过某种方式提供底层API,然后H5实现业务逻辑,最终完成整个App。

这样一来,原生容器与H5之间便需要建立通信的方式,JsBridge由此而生。

什么是JsBridge?

JsBridge是原生与H5之间的一种通信方式,就像我们说中文外国人听不懂,外国人说洋文我们听不懂,但是如果我们画出来就都懂了一样。

JsBridge的原理

H5拼接数据成url,然后触发这个url,原生拦截到url后,进行分析,获取H5传达的数据,并完成H5的需求,最后将需要传递给H5的数据进行分装,并调用H5的JsBridge对象进行回调。

H5拼接的这个url,称为url scheme,JsBridge内部会通过创建iframe的方式来触发这个url scheme

JsBridge的H5用法如下:

初始化

function connectWebViewJavascriptBridge(callback){

     if (window.WebViewJavascriptBridge){

         callback(WebViewJavascriptBridge);

     } else {

         document.addEventListener('WebViewJavascriptBridgeReady', function(){

              callback(WebViewJavascriptBridge);

         }, false);

     }

};

H5调用原生的funciton

connectWebViewJavascriptBridge(function (JSBridge) {

      JSBridge.callHandler('functionName',{'param':str1},function(responseData)){

      }

      JSBridge.send('functionName', {'param': str1}, function(responseData) {

      });

});

callHandler和send的区别在于:callHandler定义的方法都有回调

                                                   send定义的方法没有回调

H5设置function供原生调用

connectWebViewJavascriptBridge(function (JSBridge) {

     JSBridge.registerHandler('functionName', function(response) {

     });

     JSBridge.setDefaultHandler(new DefaultHandler());

});

registerHandler和setDefaultHandler的区别在于:registerHandler需要写出Handler的名称,原生必须通过对应的Handler名称进行调用

                                                                               setDefaultHandler不需要写出Handler的名称,原生可以通过默认Handler进行调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值