一、组件化
在开发过程中,随着项目进行下去,代码量增加,有时候为了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+.可查看隐藏文件)
图12.搭建功能组件
$ 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:
图7b2.发布到组件中心:$ 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为上述文章的组件管理中心。
网友评论