05-组件化(远程私有库)

一、组件化概念介绍

  • 将一个单一工程的项目,分解成为各个独立的组件;然后按照某种方式,任意组织成一个拥有完整业务逻辑的工程

二、如何划分成为一个组件

  • 简单可以划分为:业务组件、功能组件、基础组件
    组件化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
组件化4.png

组件化5.png

3、编辑spec并且上传到远程索引库

  • 1、编辑spec
    组件6.png
  • 2、递交代码到远程仓库中
    组件化7.png
  • 3、打tag并且上传远程
    组件化8.png
  • 4、可以对spec文件做一下验证,只有通过了验证spec文件才能上传成功
    • spec本地验证
      组件化9.png
    • spec远程验证
      组件化10.png
  • 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,644评论 25 709
  • 最近在学习vue.js的时候发现,vue的组件化的思想对于编写代码是一个非常有用的事情。 首先为什么需要组件化? ...
    拂晓的云阅读 7,275评论 6 23
  • 前言 本篇主要讲解组件化架构思想,从零教你如何组件化一个项目。 如果喜欢我的文章,可以关注我微博:袁峥Seemyg...
    袁峥阅读 21,292评论 41 339
  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 22,504评论 0 39
  • 想写点什么,却又无从下手,只能想哪写哪了。我这人平时沉默寡言,不爱表达也不会表达,经常语无伦次,说不行,写更不行,...
    Jenny_2430阅读 174评论 0 0