最近做项目遇见了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进行调用

JsBridge的学习相关推荐

  1. React-Native学习指南

    React-Native学习指南 本指南汇集React-Native各类学习资源,给大家提供便利.指南正在不断的更新,大家有好的资源欢迎提供给我们 目录 教程 React Native React.j ...

  2. android 加载条封装,Android基于JsBridge封装的高效带加载进度的WebView

    图片发自简书App 概述 从去年4月项目就一直用起了JsBridge,前面也针对jsBridge使用姿势介绍过一篇入门篇,<Android JsBridge实战 打造专属你的Hybrid APP ...

  3. React Native学习速记

    学习路线建议:ES5/6 -> React -> React Native  -> Redux + React-Navigation等 ES5 :https://wangdoc.co ...

  4. Android APP开发框架选择——JSBridge既个人心得和技巧

    前言: 前几年公司要求做手机移动端APP开发,很多牛企也来我们这里推广自己的框架,比如IBM WorkLight,微软office365等等. 最近做个APP,个人谈谈框架的选择和自己心得. 首先,作 ...

  5. 别人那里看来的,先记着,学习下,以后也许就用到了

    各种帮助类汇总:https://github.com/Blankj/AndroidUtilCode 常用的 ios 风格 dialog 和 meterial design 风格的 dialog:htt ...

  6. 安卓学习文档收集汇总

    安卓学习文档收集汇总 https://www.jianshu.com/p/86aed183ce6c?utm_campaign=maleskine&utm_content=note&ut ...

  7. HybridApp 概念与自定义JsBridge 框架

    前言: HybridApp在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之巅呢?是选择学习原生开发,研究Java.Object-C.C#等语言,还是选择 ...

  8. 学习记录-微信小程序

    一.设计要素 1.五大要点 工具类小程序功能要专一 应用类小程序交互要简单 小程序裂变要及时反馈 小程序开发要快 小程序设计一定要自裂变 2.小程序集群搭建的六种方法 以地域为维度策划小程序 以时间为 ...

  9. React Native学习提纲

    React Native学习提纲 当前版本最后修订日期: 2015年10月21日 一. React.js入门基础 1.基础HTML/CSS与基础开发工具使用 - html基础 doctype.常用标签 ...

最新文章

  1. 转--Android如何在java代码中设置margin
  2. Spring中SmartLifecycle和Lifecycle的作用和区别
  3. 为什么枚举类优于纯枚举?
  4. 桌面计算机密码应由哪项组成,计算机应用能力考试模拟试题
  5. 整数点与Pick定理
  6. 6.2二叉树及二叉树存储结构
  7. Mac 开机没声音了?只需 2 招关闭/恢复Mac开机音效「咚」
  8. tomcat启动脚本
  9. erstudio安装
  10. 10年磨一剑,铸就里程碑之作,深度评测 米10 Ultra
  11. 天视通电脑版APP怎么添加录像机_手机怎么远程连接海康录像机,手把手教你、、、...
  12. 怎样设定计算机屏幕锁定时间,电脑怎么调锁屏时间
  13. 洛谷 P4578 [FJOI2018] Upc6605 福建OI2018 所罗门王的宝藏
  14. 在大学城开一间宾馆能挣多少钱?
  15. CUDA:实现Sobel边缘检测滤波器的实例
  16. 记录一个傻逼问题- 百度地图接入 鉴权问题
  17. 阿里云机器学习PAI开源中文NLP算法框架EasyNLP,助力NLP大模型落地
  18. 小新air15为啥没人买_联想小新潮7000和小新air15对比 哪个更值得买
  19. 永磁同步电机矢量控制中的双闭环是什么意思_电机控制发展方向
  20. #874358#基于django/neo4j的电视剧浏览数据推荐系统

热门文章

  1. Muse-UI(基于 Vue 2.0 和 Material Desigin 的 UI 组件库)
  2. Memblaze发布企业级数据存储管理系统FlashRAID——从NVMe SSD出发,全面进击软件定义存储
  3. Odoo 16 企业版手册 - 采购之采购报价
  4. Mysql注入 -- 延时注入
  5. 多态的向上转型与向下转型
  6. 聚类分析——SPSS实例分析
  7. 安全责任意识能力培训课件(50页)PPTX(附下载)
  8. 饿了么移动基础设施建设
  9. 使用Metasploit对Windows系统渗透测试——加壳免杀花指令
  10. 为了证明 Windows 11 有多安全,微软亲自「黑」掉了自家电脑