笑联 x mPaaS | 12 个模块,全面小程序化,如何打造真正的一次开发复用多端?
这篇故事围绕着一款 App 基于 mPaaS 小程序进行改造娓娓展开。
作为国内校园服务场景最丰富的平台,笑联 App 已覆盖国内 130 所高校,服务近百万高校学生。
截止目前,笑联 App 内的 12 个业务模块目前已顺利实现小程序化。不仅获得媲美原生应用的用户体验,同时有效规避“发版周期长”、“无法快速在线修复 Bug”等弊端,实现真正的动态发布与更新能力。
项目背景
开篇先做个自我介绍,笑联 App 目前已是国内提供校园服务场景最丰富的平台,目前已覆盖 130 所高校,服务近百万高校学生。
因我们提供的服务类型囊括洗衣机、热水器、淋浴等多项功能,业务模块多元化,并且需满足每所学校在服务类型、标准方面的个性化设计,笑联 App 长期堆叠业务模块,缺乏规范的模块化设计,导致代码愈发臃肿,开发效率低下。
与此同时,随着业务的持续扩张,任一需求的迭代均需要重新发版审核,很显然如此繁琐的发版工期已无法满足高频更新的业务需要。
我们急需在技术侧找到对应的解决思路,一方面简化业务模块之间的耦合,加速日常的开发速度;另一方面架构上需实现模块化,找到动态发布与更新的解决方式。
我们针对市面上已开放的技术选型做了调研,Flutter 和 mPaaS 理论上都可以满足我们当时的选型要求,但 mPaaS 小程序动态更新的能力跟我们业务需求相吻合,避免需要频繁更新整个 App。
接入过程
回顾 mPaaS 的接入过程,笑联作为早期用户,和 mPaaS 技术团队建立了深入合作的革命友谊:一方面对于 mPaaS 整体的技术体系有了更全面的了解,另一方面双方协作,针对“产品接入、功能丰富”做了很多改进工作。
- Android 接入初期使用 Inside 模式,适用于业务复杂的 App,尤其是多个业务模块并行开发、迭代且需要多人多团队协同。
但由于框架中包含一些通用第三方 SDK(如支付宝支付、微信支付、微信分享等),因这些集成的第三方 SDK 自身版本过低或者功能不全,存在一定的解除依赖工作。
后续 mPaaS 推出 AAR 原生接入模式后,由 Inside 升级至 AAR 在早期还需要技术同学的协助支持。
目前,mPaaS 已经实现针对 AAR 接入模式较好的支持:通过 mPaaS IDE 插件,可以简单地点击两下,便完成小程序能力的接入。而三方 SDK 的冲突,目前配备对应的详细文档说明。
- 作为早期用户,尤其是不熟悉 mPaaS 技术体系全貌的情况下,初期遇到接入出错时日志查看不够方便,不利于研发团队快速定位问题。
关于这块,我们也和 mPaaS 官方团队做了交流,目前已将「问题定位」和「排查」作为专项重点跟进治理,我们期待后续的产品使用及问题自排查可以得到较大的体验改善。 - mPaaS 早期依赖的 Gradle 版本较低,笑联 App 在集成的时候由于 Gradle 版本的兼容问题,使得研发团队花费大量的时间定位编译失败的原因,后明确是低版本 Gradle 与其他第三方库的兼容性问题导致,如 ButterKnife。
不过现在,mPaaS 已经完美适配了高版本 Gradle,初期接入过程中遇到的问题大部分已经迎刃而解。
价值沉淀
经过一段时间的调试,最终我们成功实现 mPaaS 的接入。一鼓作气,现阶段 12 个核心业务模块已全部完成改造,以“小程序”的方式嵌入到 App 中。
引入 mPaaS 小程序,虽过程有坎坷,仍然要多谢 mPaaS 的技术同学及时答复与支持,最终一个个问题都得到了相应的解决。
但实际上“mPaaS 小程序”对我们的价值远不止于此。
首先,借助小程序的开发标准能够快速覆盖 Android/iOS 双端。小程序的语法并不算难,对于新手而言上手也很快,作为客户端同学目前可以干两个人的活(开玩笑)
从研发效率的提升角度来看,小程序技术栈的引入确实给我们带来了很多改善。作为客户端开发,不用疲于在需求的高频迭代中,给自己更多的时间去思考去沉淀客户端本身的移动中台能力,利用 mPaaS 小程序提供的自定义扩展机制,反哺给小程序来使用。
其次,mPaaS 小程序使用了 Web 能力来进行 UI 渲染加 JSCore 处理逻辑。在渲染逻辑上,和纯原生开发的页面相比还有一点点差距,但换来的是强大的动态性以及一端开发双端适配的研发效能提升。
另外 mPaaS 提供了独立的 UC 内核,小程序凭借独立内核,针对性的渲染优化,其性能相较 HTML5 已做了明显优化。还有即小程序的这套设计,其实渲染引擎可以无感替换,期待未来 mPaaS 可以结合 Flutter 的绘制引擎,带来高性能的小程序方案。
再者,基于小程序开发标准,我们有能力做到丰富笑联的生态。
笑联 App 中可以嵌入自身业务相关小程序,也可以开放其他第三方小程序接入笑联的功能。像笑联是面对高校市场,未来是不是可以结合 mPaaS 开放接口,将小程序开放能力提供给高校开发者,让更多高校开发者参与进来共建生态?
接入 mPaaS 至今,笑联开发团队对 mPaaS 极为肯定:
- 站在开发者的角度来看,mPaaS 结构清晰,语法简洁明了,API 接口充足(还可以在客户端中自定义接口
笑联 x mPaaS | 12 个模块,全面小程序化,如何打造真正的一次开发复用多端?相关推荐
- Iar环境c语言调用汇编函数,如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数?...
我在硬故障处理程序中有一些程序集.程序集基本上是为了传递当前堆栈指针作为参数(在R0中).它看起来像这样...如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数? __asm(&quo ...
- 敏俊物联MJIOT-AMB-02 RTL8195M 高性能wifi模块
敏俊物联MJIOT-AMB-02 RTL8195M 高性能wifi模块 MJIOT-AMB-02介绍 MJIOT-AMB-02是一个完整且自成体系的 物联网解决方案,能够独立运行,也可以作为从机搭载于 ...
- 敏俊物联MJIOT-AMB-03 RTL8710BN 高性能wifi模块
敏俊物联MJIOT-AMB-03 RTL8710BN 高性能wifi模块 MJIOT-AMB-03是一个完整且自成体系的 WiFi网络解决方案,能够独立运行,也可以作为从机搭载于其他主机 MCU 运行 ...
- 用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器
用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器 HP_tk.py模块是小白量化第二代量化系统中的开发模块.其中HP_tk.py模块是小白量化系统GU ...
- 用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器
用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器 前面我们介绍了在Tkinter中使用exec()函数运行用户程序的方法.exec()采用多线程 ...
- 健身房瑜伽馆行业门店 3.1.0 后台模块+前端小程序
微擎模块 健身房瑜伽馆行业门店 3.1.0 后台模块+前端小程序,优惠券,活动,三级 分销 模块介绍: 主要功能: 课程管理 排课约课 会员管理 教练管理,包括私教 场馆管理 付费视频 优惠券,活动, ...
- PyQt5 serial模块-串口小工具
PyQt5 serial模块-串口小工具 串口简述 serial模块 参数 方法 使用模板 串口工具示例 串口简述 异步串行是指UART(Universal Asynchronous Receiver ...
- python高效开发实战配套源文件_分享12个python使用技巧,助你轻松掌握Python高效开发...
前言: 欢迎大家收看分享12个python使用技巧,助你轻松掌握Python高效开发!部分代码用图片的方式呈现出来,方便各位观看与收藏,要是喜欢的话,记得一定不要忘记点赞关注嗷! 内容如下: 1. 隐 ...
- 猜叔叔的出生年月日 今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。
package org.bluebridge.topics;/** 猜叔叔的出生年月日今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树.休息的时候,小明的同学问他叔叔多大年纪 ...
最新文章
- Normal Equations 的由来与推导
- SpringSecurity - 基础篇
- Unity5和WebGL移植指南的一些总结
- maven3.6.3 配置环境变量_JDK1.8简单配置环境变量---两步曲
- 小量数据和海量数据分页显示存储过程
- Java基础入门(八)之面向对象二
- Atiitt 使用java语言编写sql函数或存储过程
- 基于fo-dicom 的 Worklist CStore 我的学习实现路线
- 从零开始写触摸屏驱动(Linux4.3.2 JZ2440V3 480*272)
- 【解救ROS】ros小车机器人摄像头寻线的实现(基于opencv)
- 个人练习 —— 使用c#、Winform窗体 编写鼠标连点器(附代码和工具逻辑)
- Java事务处理总结
- Python版的BS期权定价模型和希腊值分析
- Java代码实现excel的导入和导出
- 动态联动select下拉框实现
- Kubernetes:开源 K8s 管理工具 Rancher 认知
- 让我们红尘作伴活得潇潇洒洒
- ckeditor提交时判断是否为空
- < Linux >:Linux 进程概念 (1)
- 通联支付“当面付”有哪些优势?
热门文章
- 怎么通过MQTT查看数据是否上云端_设备工程师们的福利来啦!JSON数据采集网关帮你实现云端对接~...
- idea卡顿的解决方法_lt;绝地求生/PUBG/解决卡顿方法(停机9小时)维护gt;9月16日(星期三) 08点30分amp;崩溃...
- 禁用计算机组策略和管理,计算机正在使用时,禁用或关闭组策略刷新 | MOS86
- android 3.0单元测试,Android Studio 3.0 gradle 3.0.0-beta2打破了Kotlin单元测试覆盖率?
- java jdbc mysql 乱码_【求助】为什么用纯java jdbc插入mysql一直乱码
- 国服服务器_外服玩家热议LOL国服倒计时插件:说好的公平竞技呢?
- snmp 获得硬件信息_信息系统项目管理师(三)
- python 支付宝个人账单_金融支付财务融合业务-实践分享1:订单、账单、交易流水、账套知识解构、原理解析...
- 【LeetCode笔记】54. 螺旋矩阵(Java、迭代、递归)
- excel 科学计数法转换成文本完整显示_表格技巧—Excel里身份证号码显示不全的多种解决办法...
- Iar环境c语言调用汇编函数,如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数?...