随着公司业务的不断发展,团队不断壮大的同时,项目也随之臃肿起来,如何保障团队协作的高效,自然的想到了组件化这个话题。下面总结下本人的梳理和思考。
项目模块间的解耦、模块实现可重用、提升团队成员之间团队之间的协作开发效率、更方便单元测试。
如果你的项目较小,模块之间交互简单,耦合很少;模块没有被外部模块引用,只是一个单独的小模块;模块不需要重用,代码也很少被修改;团队规模很小。那么,你对项目就没有必要做组件化。
如果你的项目有以下三个特征以上,就要考虑下进行组件化了:
一个项目经过组件化后如何来评判项目组件化是否彻底或者说是否优秀,可以通过以下几个方面:
前4条主要用于衡量一个模块是否真正解耦,后4条主要用于衡量在项目实践中的易用程度。
一般一个项目主要分为三层:业务层、通用层、基础层

组件化封层之后,需要遵循一下原则:
目前常用的组件化方案主要有两种:
创建主工程
创建组件
可以创建 自己的模块:
其中,各个模块间的关系如下所示:

下面我们开始组件化的一些概念学习:远程索引库、本地索引库、远程代码库、本地代码库;我们逐一进行介绍。
概念:每创建一个组件都会带一个 xxx.podspec 的索引文件。专门用来存放这些索引文件的库就叫做索引库。我们需要将这些索引文件上传到远程索引库才能保证其他的同事能够拿来用。
我们接下来就创建远程索引库:登录GitHub


与远程索引库对应,本地索引库用来存放本地索引文件的库。
创建本地索引库:


用来存放准备组件化的代码,创建方式和创建远程索引库方式一样。这里我们把 自己整理的 相关代码组件化,我们创建一个 WJHBaseWidgets 的远程代码库。

我们在这里 创建 WJHBaseWidgets 本地代码库
pod lib creat 组件名
注意这里创建本地代码库是可以选择路径的,也就是说你想创建在哪里(cd 到路径就可以),后面会用到路径。
pod lib create WJHBaseWidgets

注意这个工程就在你创建代码库路径下

添加组件化代码到 Classes 文件夹



编译通过之后,提交组件到远程代码库并打tag
通过 pod spec lint --verbose --allow-warnings --use-libraries 命令验证 podspec 索引文件
验证通过之后, pod repo push 本地索引库 索引文件名 --verbose --allow-warnings --use-libraries 提交索引文件到远程索引库。
pod repo push WJHSpecs WJHBaseWidgets.podspec --verbose --allow-warnings --use-libraries
在 Finder 中可以查看是否成功

使用的话和通过 cocoapods 引入第三方一样, 在需要引入改组件的工程里修改 Podfile。
Podfile文件修改如下:

pod install 后, 项目中就把 WJHBaseWidgets 组件 pod 到项目中了。

ERROR | xcodebuild: *** /BaseModel.h:13:9: error: include of non-modular header insideframeworkmodule'wLib.BaseModel'[-Werror,-Wnon-modular-include-in-framework-module]
出现场景:pod验证podspec文件的时候,如果.h文件里面有引用第三方pod,会出现这个错误
解决方式:在命令后面添加 --use-libraries 就可以了 (本篇文章中的校验和提交均以添加)
本文分享自 HelloCoder全栈小集 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!