什么是组件化
我整理了一个PDF 如下:
在这里插入图片描述
那么如何展开组件化呢?
首先希望大家用自己手头上比较熟悉的代码来试一下,先按照上面思维导图把自己项目做一个划分。然后这里通过一个道具来对划分好的模块进行工程管理,这个工具大家作为iOS开发也都非常熟悉就是“cocoaPod”。
什么是cocoapod呢?
其实cocoapod就是一个插件,它作为大多数iOS开发管理第三方的工作所以大家都不会陌生。我整理了一下:
如何创建组建
//cd 到对应文件夹下
pod lib create XXXModule
ios
objc
yes
none
no
JS
模块化创建好了以后就能得到一个XXXModule的文件夹,然后就可以到里面的classes进行代码的编辑了。
从我们的工程把首页模块的代码拷贝进去然后就可以进行下一步了。
cd XXXMoudle/Example
pod install
然后就可以发现在example中可以看到我们刚添加的代码了。实际上就在刚的步骤,example充当了调用我们模块的使用者,XXXMoudle就是模块的编辑者。
然后 我们在example中打开我们模块,command+B一下是否就发现代码编译不通过对吧,哈哈 接下来我们对对应的问题进行改进。
第三方模块和宏的导入
在工程中pods模块找到pod文件夹找到XXXmodule.podsepcs 文件,然后拖到最下就可以看到对应的s.dependency ‘AFNetworking’,‘~>2.3’ ,把// 注析去掉然后回到终端进行pod install 就发现这时候能在我们的工程中看到对应的AFNetworking库。
现在我们可以把原来的首页模块依赖第三方库拷贝到s.dependency中了
导入宏
在Pos的podfile中,
pod ‘XXXModule’, :path=>‘…/…/XXXModule/XXXX.h’
(XXX.h就是对应宏)
导入资源文件
1.把资源文件导入到Assets文件夹
2.修改example文件的bundle读取路径
3.去到文件里面的XXXmodule.podsepcs,把s.resource_bundles的注析放开
NSString *bundlePath = [[NSString bundleforclass:[self class]].resourcePath stringByAppendingPathComponent@"/XXXTest.bundle"];
UIImage *img = [UIImage imageWithName:@"" inBundle:bundlePath compatibleWithTraitCollection:nil];
如果有本地json文件也是放到Assets的文件夹,然后编辑路径再去读取。
模块间的通讯
- 路由(具体可以参考蘑菇街)
- 通过中间层 target-action
- protocol-class
这边介绍两个模块通讯的的两个第三方库: CTmediator , beehive 大家可以去阅读一下。