文章来自:http://www.jianshu.com/p/7b4667cde80b
thanks 作者
前言
本篇主要讲解组件化架构思想,从零教你如何组件化一个项目,当然组件化也遇上许多坑,这里非常感谢小码哥王顺子老师的帮助。
如果喜欢我的文章,可以关注我微博:袁峥Seemygo,也可以来小码哥,了解下我们的iOS培训课程。后续还会更新更多内容,有任何问题,欢迎简书留言袁峥Seemygo。。。
为什么要组件化
随着项目的不断迭代,各个模块会越来越复杂,各个模块相互依赖,而且每个模块可能会有共同的业务逻辑,导致整个项目维护起来比较麻烦。
可以采用组件化,把每个业务逻辑和模块分离,单独管理,这样比较方便维护,各个开发人员只需要关心好自己的模块就好了。
组件化好处
分工更加明确,提高开发效率
复用性更好,能迅速的组成更多的App
组件化思想
就好比封装控件,复杂的控件一般都会封装,组件化只不过是把每个模块单独抽出来,作为一个小工程,然后在组成一个一个完整的项目。
如何组件化
使用cocoapods管理组件化开发
podspec:描述自己组件工程的代码目录和资源目录在哪,还有自己组件工程所依赖其他框架,到时候就会根据podspec的指引去引入自己的仓库代码.
命令:pod spec create spec文件名
// 创建pod索引库,固定写法,并且定义索引库的名字为s,后续通过s,就能拿到索引库
Pod::Spec.new do |s|
// 设置名称
s.name = "HttpManager"
// 设置版本号
s.version = "0.0.1"
// 设置摘要
s.summary = "A short description of HttpManager."
// 设置详情
s.description = "Good"
// 设置仓库主页
s.homepage = "http://EXAMPLE/HttpManager"
// 设置许可证
s.license = "MIT"
// 设置作者
s.author = { "iThinkerYZ" => "690423479@qq.com" }
// 设置仓库源,表示在哪可以找到组件工程
s.source = { :git => "", :tag => "#{s.version}" }
// 设置 源文件路径 => 不是整个工程的文件,而是自己封装的代码,以后别的工程引入,就会引入这里的代码。
s.source_files = "HttpManager/Classes/**/*.{h,m}"
// s.dependency = '' 组件工程依赖哪些第三方框架
// s.frameworks = 'UIKit', 'MapKit' 组件工程依赖哪些原生框架
// s.resource_bundles = {} 组件工程图片资源
end
podspec文件注意点:s.source_files仅仅描述组件代码就好,不要描述整个工程名文件,会把所有文件集成上去,错误写法:s.source_files = "HttpManager"
**:表示所有文件:因为*表示通配符,可有可无.
s.source_files = "HttpManager/Classes/**/*.{h,m}",表示组件代码在podspec目录下HttpManager/Classes中的所有文件,默认会自动追踪到到podspec文件的目录路径下,因为当前处于podspec文件中,处于哪个文件,就自动追踪哪个文件。
HttpManager/Classes/a.h 匹配到的应该是HttpManager/Classes/**,表示HttpManager/Classes/a.h后没有东西,就不会在找,直接匹配到。
podspec文件注意点:s.description:不能为空
podspec文件注意点:s.license:不能乱填,必须是有这样的协议,比如(MIT)
podFile文件:指定主工程加载哪些组件库,里面描述好组件


1715

被折叠的 条评论
为什么被折叠?



