一.组件化介绍
组件化模块划分
基础组件: 宏定义/自定义分类/自定义工具类
功能组件: 项目中常用功能,如:定位/推送/分享
业务组件: 根据具体业务而定,如:聊天/商城
中间组件: 负责界面路由/传参/回调
宿主工程: 类似一个壳子,组合各个组件,形成一个完整的App
组件化实质
组件化其实是把每一个功能模块拆分成一个一个的Pod库;比如项目中要用到AFN,只要Pod一下,便触手可及~;
我们制作自己的Pod库,然后把它集成到项目中.
二.基础学习
索引文件(.podspec文件)
- 记录一个组件的名称/版本/资源储存路径/维护者信息等
- 每个组件都必须有一个索引文件
索引文件库(Spec Repo)
- 存放索引文件的仓库
- 储存在CocoaPods服务器上,我们下载或更新Pod的时候会把这个仓库拷贝一份到本地,
本地存放路径:~/.cocoapods/repos/ - CocoaPods提供一个公共库,储存在本地的路径为:~/.cocoapods/repos/master/
- 创建私有仓库,储存在本地的路径为:~/.cocoapods/repos/自定义仓库名
组件模板
- CocoaPods提供用于快速创建组件的模板
- 里边可以制作我们的代码,可以做单元测试等,包含一个对应的索引文件
- 组件化就是以这个模板为基础,制作自己的组件
三.创建私有组件
-
在码云(或者其他Git仓库)创建一个私有的仓库,
当做<私有索引文件仓库>,后边用来储存索引文件(项目名称:mySpecs) -
在码云(或者其他Git仓库)创建一个公开的仓库,
当做<组件仓库>,后边用来储存组件(项目名称:WFPodlib) -
关联私有索引文件仓库
把创建的索引文件仓库关联拷贝到本地pod repo add [仓库名] [仓库URL地址]
-
本地新建文件夹(名称:testPod)
下载组合模板到testPodcd [文件夹全路径]/xxPod
设置组件名(WFPodlib)
pod lib create [组件名]
组件基本设置
// 使用哪种系统的模板
What platform do you want to use?? [ iOS / macOS ]
> ios
// 使用哪种语言
What language do you want to use?? [ Swift / ObjC ]
> objc
// 是否创建测试Demo
Would you like to include a demo application with your library? [ Yes / No ]
> yes
// 使用哪种测试框架
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
// 是否需要测试视图
Would you like to do view based testing? [ Yes / No ]
> No
// 测试Demo的类前缀
What is your class prefix?
> WF
-
代码制作
把自己的代码(类文件)直接复制到xxPod/WFPodlib/WFPodlib/Classes里 -
配置组件索引文件
cd [文件夹全路径]/xxPod/WFPodlib //检查本地索引文件(passed validation 表示通过验证;--allow-warnings可忽略警告) pod lib lint
-
制作好的代码Pod 到组件测试工程中,可以进行编译 运行
cd [文件夹全路径]/xxPod/WFPodlib/Example pod install
-
把做好的组件推送到自己的组件仓库
// cd 到组件根目录 cd [文件夹全路径]/xxPod/WFPodlib/ //初始化git git init git add . //提交一个Git版本 git commit -m "xxKit组件初始化" //关联码云上的组件仓库 git remote add origin [组件仓库URL] //推送版本到master分支(-f强制推送,覆盖掉之前的所有文件) git push origin master -f //添加版本标签(标签号必须与索引文件里的标签号一致) git tag 0.1.0 //标签推送到组件仓库 git push --tags //检查远程索引文件(passed validation 表示通过验证) pod spec lint
-
关联CocoaPods服务器
//cd 到xxKit组件根目录 cd [文件夹全路径]/xxPod/WFPodlib //推送组件的索引文件到服务器,并告诉服务器存在哪个私有仓库中 //[私有仓库名] : xxSpecs //[组件名] : WFPodlib pod repo push [私有仓库名] [组件名].podspec --allow-warnings 查看本地的CocoaPods仓库(可看到公共库和自己的私有库) pod repo //更新本地CocoaPods仓库 pod repo update //搜索刚才制作的组件 pod search [组件名]
项目中引用私有组件
- 新建一个工程,并添加 Pod
- 配置Podfile文件
//全局添加
source 'https://github.com/WFregister/mySpecs.git'
//单独添加
pod 'WFPodlib', :git => 'https://github.com/WFregister/WFPodlib.git'
网友评论