美文网首页
HCMediator组件化详解

HCMediator组件化详解

作者: 刚刚8888 | 来源:发表于2020-06-08 09:41 被阅读0次

    组件化创建流程库

    组件化需要创建私有spec库(索引库)、HCMediator库(App中介库)、其他组件库

    私有spec库(索引库)

    1. 在github(或其他服务器)上新建一个仓库(XXXSpecs)作为私有spec库
    2. 终端执行命令
      pod repo add XXXSpecs https://github.com/XXXX/XXXSpecs.git
      克隆到本地作为私有库库源。(pod repo list 可查本地l库源列表)

    HCMediator库

    1. 同上,在github上新建一个仓库,并通过Source Tree获命令克隆到本地
    2. 终端切换到目录 执行命令
      pod lib create HCMediator
      ,会根据cocoapods的pods模板生成一个pods工程,包含pods以及demo工程
    3. 终端demo目录下通过
      pod init
      ,然后
      pod install
      安装Cocopods,然后删除replaceme.m文件,在Classes目录下添加模块(HCMediator)源码文件
    4. 打开demo项目编辑XXX.podspec文件,字段含义参考链接
    5. 修改完成后终端podfile目录下
      pod install
    6. 通过终端切换至podspec文件存在的目录下执行
      pod lib lint
      检查本地索引(忽略警告使用pod lib lint --allow-warnings)
      ,执行
      pod spec lint
      检查远程索引(pod spec lint --allow-warnings)
    7. 都没有问题后执行
      pod repo push XXXSpecs XXX.podspec --allow-warnings
      cocoapods会把podspec文件上传到GitHub XXXSpecs仓库中,从而完成索引配置
    8. 在组件化的工程中 通过cocoapods 导入组件时需要先在Podfile中添加库源地址
      source 'https://github.com/XXXX/XXXSpecs.git'
      如果不是framework注意注释掉use_frameworks!
      之后就是正常pod第三方库写法" pod 'HCMediator' ", 然后pod install

    其他组件库

    其他组件库创建方法同HCMediator库创建方法

    HCMediator使用流程

    HCMediator模块介绍

    HCMediator是工程组件化中中介路由功能模块,主要负责组件间解耦工作。实现组件间完全解耦,组件模块只和中介模块产生关联。

    1. 每个模块通过建立HCXXXDelegate类,然后实现HCModuleProtocol协议中代理方法从而实现本模块对外跳转接口vc及传参使用,并实现组件模块中需要处理的UIApplicationDelegate协议内容。
      其中:
      -(UIViewController *)rootViewControllerForModWithParameters:(NSDictionary *)parameters;方法中实现进入子组件时子组件跳转根vc 及参数使用,此代理方法为@required ,要求子组件必须实现。
      其他HCModuleProtocol协议中的方法为子组件UIApplicationDelegate协议内容,子组件可以需要时使用
      注:只有HCXXXDelegate类与中介模块有联系,其他组件内内部类与中介及其他组件完全没有联系,从而实现组件间完全解耦。
    2. 中介模块通过维护HCAppProfile.plist文件来维护各个组件的调用名及HCXXXDelegate类名,组件间相互使用时中介通过查HCAppProfile.plist来判断调用组件是否存在,新组件在构建完自己的HCXXXDelegate后需要提供出自己的调用名(代号)及HCXXXDelegate类名给中介模块,中介模块添加到HCAppProfile.plist后,其他组件才能调用到。
    3. HCMediator类为中介主类,组件通过
      [[HCMediator mediator] launchModule:@"A" parameters:nil transition:HCModTransitionTypePush];
      调用其他组件。

    主工程使用

    主工程除了实现主组件内容外,需要将自己的AppDelegate继承HCMAppDelegate,实现将AppDelegate中介化,从而其他组件也可以通过HCModuleProtocol使用AppDelegate中代理内容。

    其他内容主工程和普通子组件使用方式相同

    组件工程使用

    组件工程只实现本模块下需要实现的内容,而且可以独立运行测试,提高运行效率
    组件工程需要提供组件入口vc ,具体内容同HCMediator模块介绍 第1点。通过在组件HCXXXDelegate类中实现代理方法,实现对外接口提供。
    组件工程开发过程中可以先进行内容开发,开发完成后,建立HCXXXDelegate类,实现相应方法完成对接,然后再将自己AppDelegate中UIApplicationDelegate各个代理方法中内容复制一份到HCXXXDelegate类中对应的HCModuleProtocol协议中各个代理方法中即可。

    pod 日常更新流程

    组件工程

    1. 完成修改内容后,需要修改组件的XXX.podspec配置文件的“ s.version ” 版本号(必须)
    2. 通过Source Tree 或命令提交代码,并打上标签号(tag ,注:规定标签号需要和第一步配置的版本号相同)
    3. 通过终端命令 pod spec lint --allow-warnings 验证无误
    4. 通过终端命令
      pod repo push XXXSpecs XXX.podspec --allow-warnings
      更新podspec文件到GitHub XXXSpecs仓库中,从而完成索引配置
    5. 确认GitHub XXXSpecs 仓库中标签(tag)值改变
    6. 使用组件的工程通过终端命令
      pod update XXX
      实现私有组件的更新

    主工程

    同组件工程更新流程
    主工程更新组件通常通过终端命令
    pod update
    实现全部组件的更新

    HCMediator中介模块

    1. 中介模块内容修改优化更新时同组件工程更新流程
    2. 新增组件时需要注意更新HCAppProfile.plist文件中内容

    相关文章

      网友评论

          本文标题:HCMediator组件化详解

          本文链接:https://www.haomeiwen.com/subject/fnjmyctx.html