混合开发接口设计——以ReactNative、JSSDK为例

前言

随着前端技术在客户端的应用越来越多,客户端开发的角色也在慢慢转变,页面开发在逐渐减少,基于前端框架的二次开发 和 原生能力封装接口的任务在增多。本文主要分享一下,我在原生能力封装上的体会。

现状

前端技术更新换代频繁,客户端提供原生能力的接口层也需要跟着做调整。最初的Hybrid,原生封装了JSSDK,后来的ReactNative,原生封装了RNBridge。最近的Flutter,原生又需要封装FlutterChannel。其实原生的能力是同样的,但是接口层的代码太多太庞杂,每次迁移的成本都很大。如果一个项目中同时存在n个前端框架的情况下,每次添加一个原生能力,需要写n个接口!

如下图所示,红色部分代码雷同且繁多。

优化方案

为了减少重复代码,将JSSDK、RNBridge等模块的方法分发逻辑转移。优化方案中JSSDK、RNBridge只提供一个或者几个方法,并且方法实现都调用适配层方法,由适配层处理方法的分发。

优点:
1、前端技术更换时,原生能力的迁移将更加平滑
2、原生给前端提供的接口文档只需维护一份
3、多种前端框架的情况下,减少重复实现接口的工作量