模块化开发方案


命名规范

eg:SVBxxxx。SVB统一前缀,xxxx业务组件名称

  SVBxxxx-yyyy。yyy是业务模块的子模块(待定)

相关说明

凡间:“凡是皆组件的意思”,对基础组件进行管理

基础服务层:这个其实是个虚拟层,有3个基础组件组成“SMGJSManager”、“SMGRouterBox”、“SMGAPPService”

SMGJSManager:与前端交互组件,对JSHandle进行管理

SMGRouterBox:服务化路由,对RouterHandle进行管理

SMGAPPService:APP生命周期处理组件,APPDelegate解耦,对APPHandle进行管理

要求

基于“凡间”开发

业务组件层级结构


业务组件基于“凡间”进行开发。组件之间不进行相互依赖。

业务组件内部设计


业务模块实现其功能后,将进行JS、Router、app生命周期进行配置编码,供APP与其他组件调用

业务组件之间的调用


组件之间不进行相互依赖,通过Handles进行相互调用,实现完全解耦。

(PS:Handles包括jshandles、routerHandles和appHandles)

实施步骤

1.文件隔离

首先我们需要改变工程文件组织结构。之前view/viewController/Model 划分各位文件,改为按模块进行划分,每个模块划分出view/viewController/Model/Network等。


2.抽出业务无关的技术库

尽量抽离更多的技术库,这类库与业务、产品无关,有较强的稳定性。

每个库有自己清晰的边界,彼此不耦合。

3.拆分出公共代码

拆分出很多基础组件和库后,业务之间可能还会存在很多公共代码,这部分代码与产品和业务有关,拆分后其他app基本没有复用的可能。但是确是拆分业务模块前提条件。


如上图所示按View/ViewController/Configure/Foundation/Resource目录结构将公共代码作为一个整体先拆出去。


公共代码层级结构如上图,避免相互引用。

如果公共代码中有相对独立模块,可拆分成技术组件。

4.业务模块独立

最后一步就是拆分业务模块了,拆分业务模块后,能独立运行,其实这里并没结束。将路由、jS、APP生命周期进行配置编码,供APP或者其他模块进行调用。

配置编码完成后才能算业务模块完全独立。

5.撰写说明文档和使用文档

业务组件开发与测试

模块拆分后进行独立开发,可以有两种开发方式:

1:在主工程进行开发,后将代码移到模块代码中。

2:在模块中进行开发,在模块工程中写自测的demo。

建议使用第二种。

模块开发完成进行测试,如果项目中测试人员充足,可在模块demo中进行模块测试。如果测试人员不足可在主工程进行测试。总体根据项目实际情况而定。

业务组件版本管理

业务组件版本有两种方式:

1:根据版本号进行管理,eg:pod 'xxxx','~> 2.0.3'

2:git地址+分支+tag,eg:pod 'TaxServiceTemplate', :git => 'git地址', :branch => 'branch'

因为业务模块存在很大的不稳定性,所以建议使用第二种方式,业务组件版本单独管理,当业务组件修改时,在develop上进行开发,完成后merge到指定(Release)的分支。在主工程代码update,可更新到最新代码。完成发布后业务组件打上对应的tag。

业务组件的思考?

业务组件的效果之一就是个业务模块可以独立运行。

很容易想到的一个改造就是把各个模块拆到不同的 git 中。

好处很多,比如单独的权限控制,独立的版本号,万一发版时发现问题可以及时 rollback 用老版本打包。

但后续开发中体验并不是很好。独立很多业务组件后,每个同学都同时维护着多个模块。每个业务组件修改完成后,要多次执行提交、打版本号以及集成测试等操作,很不效率。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容