1. 组件化需求来源
如果App只有一条产品线,代码逻辑相对比较清晰,但是后期随着公司业务的迅速发展,App里面可能有五六条甚至更多的产品线,每个产品线的流程有部分是一样的,也有部分是不一样的,这就需要做各种各样的判断及定制化需求。项目越来越大会出现不同产品线提过来的需求,开发人员都需要在主工程中开发,但是开发人员开发的是不同的产品线,也得将整个工程跑起来,代码管理、并行开发效率、分支管理、上线时间明显有所限制。这样就需要工程组件化,将代码重构拆分成模块,在主工程中组装拆分的模块,形成一个完整的App。
组件化初识
随着业务线的增多,业务的复杂度增加,App的代码逻辑复杂度也增加了,后期的开发维护成本也增加了,为什么这么说呢?业务逻辑没有分类,查找问题效率降低(针对新手),运行也好慢哦,真的好烦哦......我们要改变这种局面。而组件化开发,就是将一个臃肿,复杂的单一工程的项目, 根据功能或者属性进行分解,拆分成为各个独立的功能模块或者组件 ; 然后根据项目和业务的需求,按照某种方式, 任意组织成一个拥有完整业务逻辑的工程。
组件化开发的优点:
项目结构清晰
代码逻辑清晰
其它项目也可以使用
拆分粒度小
能做单元测试
迭代效率高
一.创建子工程:
ios开发中,项目越来越大,工程的结构化会变差,编译的速度会越来越慢,使用静态库或者动态库的方式不仅可以加快项目的编译速度,结构上也优化了项目的组织;可以在项目中创建子项目建立项目依赖,要尽量保证子工程不要用到主工程的内容,如果要引用可以采用代理或者其它回掉编程方式交给子工程自己处理
使用Xcode新建一个命名为ProjectDemo的工程,在ProjectDemo工程中再次新建一个framework库工程,点击新建文件中的Project...选项,选择其中的Cocoa Touch Framework工程(创建Cocoa Touch Static Library则会打包为静态库)。
LoginLib为公开文件外界可以访问;LoginObject为工具类可以打印字符串
配置LoginLib.xcodeproj的属性:
建立工程之间的关联ProjectDemo添加LoginLib库文件:
配置Target Dependencies的作用是确保每次主工程编译前都会先对所依赖的工程进行编译。之后,在ProjectDemo工程中导入LoginLib相关头文件即可使用其中功能。
引入头文件即可调用:#import<LoginLib/LoginLib.h>
注:ios路径
$(PROJECT_DIR)和$(SRCROOT)两者一样都是项目的本地路径
二:使用cocoapods组件私有库