什么是JSBridge
在大多数APP开发过程中,都会通过H5来实现部分功能,而Hybird APP基本90%以上都是H5。现在很少有纯原生的APP。但是,由于H5页面是内嵌到原生应用的WebView组件(一个浏览器内核)中,而手机浏览器Javascript引擎是在一个沙箱环境中运行,因此JavaScript的权限受到严格限制,比如没有本地文件读写权限、不能使用GPS、不能修改系统配置等。所以,如果JavaScript要用到这些受限的能力时,就需要委托原生去实现,原生完成后,再将结果通知JavaScript,因此,JavaScript和原生之间就需要一个通信的桥梁,而这个桥梁本质上就是原生的浏览器组件(我们统一称之为WebView)与Javascript 通信的通道,一般称为 WebView JavaScript Bridge, 为了简单,一般简称为 JS bridge。需要说明的是,原生不仅仅指移动端(Android、IOS)上原生代码开发的部分,它也可以是Windows、MAC上的,所以原生一词主要是为了区分H5,而本文只讨论移动端的Js Bridge 。
移动开发的大势
今年来,动态化是移动开发的主流趋势,所谓动态化是指可以随时更新APP的能力,这是为了克服原生应用修改后必须重新发版的天然不足。目前动态化的技术主要有四种:热补丁、混合开发框架(React-Native、Weex等)、纯粹的Web APP、原生加H5(需要经常更新的部分用H5实现)。 其中热补丁技术主要用于修复一些线上bug,不用于主流开发,当然也有一些基于热补丁技术的分包动态化