有关APP架构的感想

参考:https://tech.antfin.com/docs/2/49549   
CodeHub#1 回顾 | 敏捷开发与动态更新在支付宝 App 内的实践这篇文章可以详细的了解有关支付宝在移动端如何变成一个超级APP的.
支付宝的实现的移动中台覆盖了APP生命全周期,提供强大的支撑,形成了有力的闭环。

我们经常会被问到有关架构的设计的问题,参照支付宝这个超级App的架构,我们能学习到很多。

容器层:最底层的基础层,管理每个模块bundle的加载和资源管理
组件层:抽离出来的通用组件,如网络、缓存、日志、图像加载等
框架层:这层和原生的Android,iOS系统SDK类似
服务层:我们基于框架封装的一些业务服务层,提供登录、支付、LBS等服务
应用层:就是具体的业务实现,如扫码、转账,蚂蚁系其他App的底下四层几乎一样。

对于基本的H5页面的加载管理的处理:
   1.离线宝机制,解决H5加载的性能问题。离线包就是讲HTML,JavaScript,CSS等页面内的静态资源打包到一个压缩包内,离线资源提前下载,解决浏览器白屏问题。每个离线包就是一个小积木,很方便做到热插拔,实现动态更新。

从技术层面来讲做组件化的目标是为了可以做到减缓代码腐化过程,加快编译时间,模块分权管理,代码规范,bug减少,独立开发,调试,自动化编译,集成等工作.
组件原则
     组件被定义为两种类型的组件:基础组件,业务组件
    基础组件可以被业务组件依赖,基础组件不可依赖业务组件
    业务组件不可依赖业务组件
通信原则  类似路由的router
    模块之间页面跳转
    模块之间数据传递
    模块初始化处理
AppDelegate入口解耦
页面容器,第三方SDK初始化工作需要在启动时完成,通过hook AppDelegate,将入口所做的工作交给一个组件完成,在该组件中注册其他需要在启动时调用AppDelegate方法的组件,让每个组件都有一类似didFinishLaunchingWithOptions方法.
Cocoapods管理
代码解耦遵循原则: 业务与业务之间不能有耦合,通过Cocoapods把每一个组件都拆分成独立的pod库.针对每一个组件设置权限控制.

拆分总体按照:基础组件(控件,视图,基础宏定义)
                        独立组件(网络,日志,缓存,定位)
                        独立模块(模块也就是业务的拆分,登录模块,地图模块,订单记录模块)

 参考:京东 iOS 客户端组件管理实践
蜂鸟商家版 iOS 组件化 / 模块化实践总结
豆瓣 App 的模块化实践


 

发布了36 篇原创文章 · 获赞 16 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_28551705/article/details/89421375
今日推荐