一、组件化概念介绍
- 将一个单一工程的项目,分解成为各个独立的组件;然后按照某种方式,任意组织成一个拥有完整业务逻辑的工程
二、如何划分成为一个组件
-
简单可以划分为:业务组件、功能组件、基础组件
组件化1.png
二、远程私有库简绍
- 远程私有库中的“远程”表示,我们开发的代码存储到远程代码仓库中,而不是本地;“私有”表示,访问这个库是需要权限的,只有通过库的作者授权了以后,他人才可以访问使用。
-
下面通过一幅图来对比一下 远程私有库 和 开源库
组件化.png
三、创建私有库
1、首先要找一个远程代码托管平台(码云、码市、GitHub<收费>),这些都可以。
-
1、创建一个远程私有索引库,后续中我们所有组件的spec文件都会上传到这个远程私有索引库中
组件化2.png
2、基础组件
- 1、创建存放基础组件源码的远程库
- 1、使用终端来快速创建一个私有库模板库
RemoteLibrary $ pod lib create RevanBaseModule
- 2、在回答下面的问题
What language do you want to use?? [ Swift / ObjC ]
> ObjC
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
What is your class prefix?
> Revan
-
3、把需要组件化的代码拖到模板中的Classes文件夹下
组件化3.png
- 4、执行以下命令把代码加入项目工程中
pod install
![](https://img.haomeiwen.com/i2338406/edaa2d2d0c2b7180.png)
![](https://img.haomeiwen.com/i2338406/4f3af0c83acd21db.png)
3、编辑spec并且上传到远程索引库
-
1、编辑spec
组件6.png
-
2、递交代码到远程仓库中
组件化7.png
-
3、打tag并且上传远程
组件化8.png
- 4、可以对spec文件做一下验证,只有通过了验证spec文件才能上传成功
-
spec本地验证
组件化9.png
-
spec远程验证
组件化10.png
-
spec本地验证
-
5、上传spec文件到本地
组件化11.png
-
本地索引库
组件化12.png
-
远程索引库
组件化13.png
-
本地索引库
- 5、小结
- 只要执行一次上传spec文件的操作,本地索引库和远程索引库都会上传上去
pod repo push RevanSpecs RevanBaseModule.podspec
三、迭代基础组件
- 1、把需要组件化的代码拖入Classes文件夹下
- 2、修改podspec文件中的版本号
- 3、提交代码到远程仓库
- 4、打tag:1、与version版本号相同,2、推送到远程
- 5、验证podspec文件
- 6、上传podspec文件
四、使用私有库
-
1、使用私有库时,必须在podfile文件中引入source
组件化14.png
-
2、在Podfile文件中添加了source后安装成功
组件化15.png
- 3、为什么要同时在Podfile文件中添加Cocopods官方source 和 私有source
- 1、通常情况下使用第三方库的时候,都是使用Cocopods官方source,但是当我们使用私有库的时候,因为我们私有库的podspce文件并没有上传到CocoPods官方索引库中,所以是在不到我们的私有库,这就是为什么第一次安装失败的原因
- 2、当我们在Podfile文件中只添加私有库的源时,因为添加了源就指定了索引库,这样会造成只能搜索到我们的私有库而搜索不到AFNetworking等等的开源库,所以,为了都能使用,当我们在使用私有库时,必须要同时在Podfile文件中添加CocoPods官方和私有source
五、subspec
- 1、为什么要使用subspec
- 因为有时我们项目中只是用到了基础组件中的Category文件夹中的代码,如何使用开始的方式添加私有组件的时候,会把私有组件中的所有代码统统加入到项目中,这就造成很多不必要的代码加入了项目中,而使用subspec后就会完美的解决这个问题
-
2、subspec书写格式
组件化16.png
-
3、使用了subspec后搜索出来的格式
组件化17.png
-
4、没有使用subspec和使用了subspec相比较
组件化18.png
组件化19.png
-
5、使用私有库中多个文件夹
组件化20.png
网友评论