使用Pod管理项目组件,从封装WKWebView与JS交互功能组件开始

一、组件化

   在开发过程中,随着项目进行下去,代码量增加,有时候为了UI、功能的统一性产生了继承关系,代码维护是个比较令人头疼的问题,而组件化能很好的解决这个问题。

二、使用Pod管理组件

  就像我们在iOS项目中使用第三方一样,我们从Cocoapod中导入发布到其上的第三方工具。我们借助cocoapod,可以搭建自己项目的工具中心。

1.搭建组件管理中心

在Mac环境,首先确认已经安装ruby、cocoapods、xcode,首先在GitHub中建一个空项目(将获得一个项目地址,用于后面的方法调用),然后在本地建立一个管理中心:

$ pod repo add NAME URL [BRANCH]

如:pod repo add kimSpecs https://github.com/Cralyoniii/kimSpecs.git

执行完成后如图1:在根目录下可以看到新建的本地仓库(command+shift+.可查看隐藏文件)

图1

2.搭建功能组件

$ pod lib create NAME

如:pod lib create CYWebJS ,注意此命令将在当前目录下创建项目

执行完后如图2(请根据配置选择):

图2

创建完成后,打开项目根目录,如图3(Example是已经完善的):

图3

其中CYWebJS文件中,新建组件会有Assets、Classes这两个文件,不喜可删,本人也是使用自己的目录结构的,这里修改后,涉及到CYWebJS.podspec文件的编写。比如我的目录是这样的(如图4):

图4

所以,我的podSpec文件配置(如图5)(homepage和source都是比较重要的,如果需要发布到组件管理中心):

图5

  在Example目录下是针对这个功能组件的demo,写有Podfile文件,重新pod install即可导入CYWebJS(如图6)

图6

当然我们如果搭建比较复杂的功能组件,可以有比较复杂的编写规则,生成的目录结构也不同,有时间会写(可以在网上找到相应的文章)。

功能组件代码完成后记得将其更新到GitHub中,此时有两种使用方式,

a.如果不发布到个人组件管理中心,可以使用在Podfile中直接指定组件的路径,比如:

pod 'CYWebJS', :git=> 'https://github.com/Cralyoniii/CYWebJS.git'

b.发布到个人组件管理中心首先将需要发布的组件打tag,指定版本号,比如这里初始化0.0.1

进入项目podsepc文件的目录下,在terminal中使用命令:

b.1 验证组件:$ pod lib lint [PODSPEC_PATHS ...]

如:pod lib lint --sources=https://github.com/Cralyoniii/kimSpecs.git,https://github.com/CocoaPods/Specs.git --allow-warnings

结果如图7:

图7

b2.发布到组件中心:$ pod repo push REPO [NAME.podspec]

如:pod repo push kimSpecs CYWebJS.podspec --sources=https://github.com/Cralyoniii/kimSpecs.git,https://github.com/CocoaPods/Specs.git --allow-warnings

结果如图8:

图8

三、使用新组件的两种方式:

1.在项目的Podfile中指定路径:

如:pod 'CYWebJS', :git=> 'https://github.com/Cralyoniii/CYWebJS.git'

2.在项目的Podfile中指定组件中心的路径。

如:source 'https://github.com/Cralyoniii/kimSpecs.git'

source 'https://github.com/CocoaPods/Specs.git'

pod 'CYWebJS'

CYWebJS项目中封装了WK基本的使用,仅供参考

kimSpecs为上述文章的组件管理中心。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 要解除循环依赖,引入包管理技术cocoapods会让我们更有效率。pod不允许组件间有循环依赖,若有pod ins...
    cs_mark阅读 2,250评论 0 1
  • 最近在学习vue.js的时候发现,vue的组件化的思想对于编写代码是一个非常有用的事情。 首先为什么需要组件化? ...
    拂晓的云阅读 7,402评论 6 23
  • 前言 本篇主要讲解组件化架构思想,从零教你如何组件化一个项目。 如果喜欢我的文章,可以关注我微博:袁峥Seemyg...
    袁峥阅读 21,532评论 41 339
  • Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自...
    Nash33阅读 2,201评论 0 50
  • 1、创建私有Spec Repo Spec Repo是什么?它是所有的Pods的一个索引,就是一个容器,所有公开的P...
    圉湢阅读 1,853评论 0 3

友情链接更多精彩内容