组件化理解(ps:个人理解,关于组件化的文章网上一大堆,本文只涉及自己的观点)
组件顾名思义组成某个工程的部件。在传统意义上的iOS开发,相当于我们封装的公共类,公共方法或者公共model,更或者是我们抽取出来或者独立出来的某一部分功能。由于技术的转变,现在转变成一种更便捷的开发方式,目前分为两种:子主工程化和cocoapods导入,这两种方式其实就像我们引入第三方skd库工程一样。首先说第一种,子主工程化:就想当于我们把要抽取的代码以Frameworks的形式封装,本地导入,然后配置头文件等建立子主工程关系。第二种就是本文要介绍的方法,从基本本地库,远程库制作,到使用,更新。如果我们项目功能流水线单一或者业务逻辑不复杂更或者独立开发的同学,不太建议使用组件化。因为多个组件并不是那么容易维护。并不是用组件化一定是好的,找到适合项目,适合业务逻辑分层,解耦的开发方式才是最好的方式。
cocoapods组件化必备功能以及流程分析
1.我们使用私有索引仓库来管理以及维护我们的组件
2.我们要注册一个trunk账号,以便于我们将组件上传到公共仓库中
3.我们需要在github上创建一个私有仓库,用来存储我们制作库的索引文件(一般都是Specs结尾命名:如登陆模块LoginSpecs)
4.然后创建一个公开的的仓库,用来存放我们的组件代码(自定义:Lib,kit,如LoginLib)
5.在本地生成组件文件时,会同时生成一个索引文件就是3中提到的,我们需要把里面的地址改成我们组件的地址,以便告诉cocoapods服务器我们组件存放地址,我们在使用cocoapods时,先把github索引文件仓库更新到本地,我们在项目中使用组件时,他会通过索引文件里面的地址找到我们要用的组件,然后down到我们的项目中
基础集成步奏
1.我们首先在github新建一个私有仓库(存放索引文件)如下图,然后在同样创建一个存放组件代码的公共仓库LoginLib(不再截图)
2.然后我们执行命令把创建的私有索引仓库down到本地
3.然后cd 进到/Users/dacong/.cocoapods/repos/LoginSpecs(刚才down下来的索引仓库名字LoginSpecs)并验证索引文件仓库(命令:pod repo lint .),看到红线部分说明成功
4.我们要存放我们的组件代码,需要新建一个文件夹在桌面,比如LoginPod,然后cd 到创建的文件夹下,通过命令(pod lib create LoginLib)下载组件模板,LoginLib为我们自定义的组件名称,然后输入相关配置
5.相关配置输入完成后,会自动为我们下载并且打开我们配置的组件模板到我们本地创建的LoginPod文件夹下,我们只需要把我们要制作的组件放到/Users/dacong/Desktop/LoginPod/LoginLib/LoginLib/Classes下即可,另外删除ReplaceMe.m文件(我们要保证我们要组件化的代码编译起来没问题)
6.我们需要配置我们的索引文件
7.我们cd到下载到本地文件夹下的LoginLib文件夹,然后检查本地索引文件pod lib lint --allow-warnings
8.我们cd到下载到本地文件夹下的LoginLib文件夹下的Example文件夹,然后pod install
9.我们吧做好的组件推送到我们第一步建立的公开组件仓库里面(名称:LoginLib)首先我们cd到我们本地的LoginPod文件夹下的LoginLib文件夹然后执行git命令:git init 然后git add . 然后提交版本信息git commit -m "LoginLib登陆组件第一次上传",然后关联我们的仓库git remote add origin https://github.com/zh*********93/LoginLib.git(组件仓库地址),然后强制推送git push origin master -f ,然后添加版本号,需要和我们第6步索引文件里面的版本号保持一致 先git tag 0.1.0然后git push --tags,最后我们在检查远程索引文件 pod spec lint --allow-warnings(passed validation 表示成功)
10:我们需要将制作好的组件关联CocoaPods服务器,我们cd到本地文件夹LoginPod的LoginLib下,需要把组件代码中的索引文件,推送到我们创建的索引文件私有仓库 pod repo push LoginSpecs(私有索引仓库名) LoginLib.podspec(我们组件文件里面的索引文件) --allow-warnings 这一步执行成功后我们使用pod repo 查本地的cocoaPods仓库,存在说明成功。
11:我们更新本地的cocoaPods仓库 pod repo update 这一步可能会失败,多试几次,或者去网上根据错误找对应的修正方法(可能跟版本有关系)
至此基本组件远程发布成功,我们可以在项目中cocoaPods引入然后pod install一下试试能不能引用到,引用方法(全局引入索引文件仓库) source 'https://gitee.com/xxSpecs.git' 或者(单独添加需要引入代码仓库)pod'xxKit',:git=>'https://gitee.com/xxKit.git'
更新cocoaPods组件库(版本迭代)
1:首先把改完的组件代码提交到本地仓库,然后在推送到我们的远程仓库命令: (1)git add . (2) git commit -m‘更新描述‘ (3) git push origin master
2.我们要更新我们索引仓库的版本如(1)git tag -a 0.2.0 -m "Release version 0.2.0" (2)git push origin --tags
3.我们打开我们组件库的LoginLib.podspec文件,修改里面的版本号跟步奏2对应,然后重复第1个步奏
4.然后在验证一下spec : pod spec lint --allow-warnings
5.然后更新一下索引库文件pod repo push LoginLib LoginLib.podspec --allow-warnings
6.最后在我们要使用组件的项目中// --no-repo-update 不更新本地索引库 ,因为刚刚已经自己手动更新过了,所以这里我们选择跳过更新 :pod update --no-repo-update
以上就是全流程远程组件库的制作和更新