来自独角兽企业的混合体系背后的思考

简述

一个技术体系的选择并不是选择越前沿的技术越好,而是要考虑当前所处的环境,也就是当前所能提供的基础服务,人才储备,成本,以及考虑所需要应用的场景等。

下面的内容主要是我们团队当时的一些实践以及一些思考,大家可以借鉴参考,故事的最开始应该是发生在 2017 年初吧。

技术选型

那个时候刚来到新公司半年多点,陆陆续续入职了一些前端开发,大概前端总人数 7、8 个人吧,客户端人数 4 个人左右。公司蒸蒸日上,但业务压力也越来越大,这时大家就提出了一个想法,我们要么把混合 APP 重新搞一下吧,不然现在的 jsBridge 方案会让大家加越来越多的班的,为了后期不加班大家全票通过。

我们列了几个方案:1.react-native 2.Ionic 3.Weex 4.cordova 5.APP 里面嵌 web。 那个时候我们也不太懂这块的内容,当然什么 Flutter、PWA、小程序啊那个时候大厂们都还藏着,没发布出来,所以大家也不知道。首先第一波讨论之后就把 Ionic、weex (技术栈暂不太符合)排除掉了,嵌入 web 的一直这么干(大部分业务性能并不能接受),肯定要升级,所以也排除了,那就只能在 RN 和 cordova 两个中选择了。一开始大家都觉得都是有 react 基础的,而且那个时候 react-native 那么火热,是个前端肯定都想选择 RN,学习一下也好。

经过初期各个技术的实践,以及分析了团队整体的参与度。最后经过一番讨论之后,我们还是优先选择了 cordova,不是说 RN 不好,而是当时业务压力相对已经较大,一半的前端童鞋其实 react 掌握的还不是很好,还在疲于业务间,转 RN 的学习成本,或者招 RN 研发同学的人力成本,在当时团队上不太能够接受。而且考虑到我们绝大部分业务都是内部工具 APP,对于体验要求没有那么高,只需要能够快速开发迭代,稳定即可。那么 cordova 方案确实则为首选,社区也提供了许多的底层 api 插件,无需重新开发,同时开发的 H5 既可以在 APP 中混合使用,也可以发布在线资源访问,这是当前最需要的。在后期的实践中,虽然要求不断提升,也遇到很多问题,不过也总结发现,cordova 确实是当时最好的选择了。

产品结构

选定以 cordova 为基础的混合开发之后,我们初期的 APP 产品结构大概是如下图这样子的,他满足了快速开发产品上线的要求,同时也将桥接层和插件层进行了剥离,提升了可维护性。

慢慢的,我们对混合 APP 的体验有了要求,优化了在线资源,和版本库管理,大概结构如下图。

慢慢的,我们要求一个 APP 中能够自由的打包多个 H5 离线资源,我们调整资源管理模式,大概结构如下图。

经过多次折腾之后,目前产品具有相对较好的体验,以及支持可单独发布 H5,单独发布 APP,同时还支持不同版本的 APP,能够自定义配置不同版本的 H5 资源包。

架构设计

整体结构大概可以分为三块内容: 1.基础服务(app/h5 项目框架、app/h5 组件库)2.发布系统(对每个项目单独打包,发布)3.业务中台(因 APP 发布的特殊性,需要业务中台做 APP 管理)。大概结构可以参考下图。

对于混合体系来说,做的好不好,发布安全不安全,可能和业务中台关系最大。下图主要大概介绍了下业务中台可以做的一些内容,当然有很多很多的内容没有展示出来,不喜勿喷。。。

以上内容主要列举了一些可以做的事,具体怎么做,以及做成怎么样,那是需要由不同团队的环境所决定的,有兴趣的童鞋可以私下进行交流。

团队收益

在这个过程中有一件很神奇的事,可能是通过共同搭建混合体系,前端和客户端间接的做了非常多的磨合,前端和客户端组合成了大前端部门,可喜可贺。

同样的,团队开发 APP 效率以及 APP 体验有了质的提升,人均维护 APP 可以达到 3 个以上,而且基本上没有出现过特别大的问题。经过这一系列的折腾,前端对客户端底层有了更多的了解,客户端也对前端的基本内容有了足够了解,隐性的提高了团队整体水平。

当然在上面这些基础服务的背后,我们还搭建了组件库 Demo 应用,调试应用,监控、埋点服务等等,所有的这些为个人、团队、公司带来了极大的收益。

重新思考

基于 Cordova 的混合体系持续应用了两年多,满足了当时的企业发展需求,但在现阶段百花齐放的前端技术来看已经占不到任何优势了。从最初的 webview 加载在线网页,到之后的 jsBridge 形式调用 App 功能的 Cordova,再到发展成熟的 RN 和 weex 采用原生渲染的方式,再到平台化的小程序模式,以及 flutter,北海这类重写渲染引擎的新跨端模式。跨端开发已经经历了一个又一个的阶段,从个人经验来看,小程序这种国有的特殊形式必然会引领一翻技术潮流,而现在正是参与制定语言标准化的好时机,一旦小程序标准成立,各大厂商必然会以服务的形式,全方位展开,谁最先则会收货流量红利。同时也非常看好 flutter,北海这类重写渲染引擎,统一所有端标准的新模式,从个人角度理解,这是在重塑一个新的生态,期望的是所有的开发者都迁移到这个新生态中,那么就有更多的机会。所以,此次此刻是时候重新架构新的混合开发模式了,这已经已迫在眉睫。最后感谢大佬们阅读到此,不足之处请多多包涵。

文章作者: 方长_beezen
文章链接: https://dongbizhen.com/posts/63118/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BEEZEN