美文网首页
组件化开发(一)

组件化开发(一)

作者: 沈正方 | 来源:发表于2018-04-19 11:38 被阅读21次

    (一)概念

    将一个单一工程的项目,分解成为各个独立的组件,然后按照某种方式,任意组织成一个拥有完整业务逻辑的工具

    如果单一工程,业务线比较少,人数比较少,普通的开发模式基本满足需求。但一旦项目发展越来越庞大,业务主线越来越多,开发人员也越来越多,就会出现一系列的问题,比如:项目模块耦合严重、编译速度很慢、测试不独立、无法使用自己擅长的设计模式等等。。。

    (二)组件化达到的效果

    • 组件独立:独立编写、独立编译、独立运行、独立测试
    • 资源重用:功能代码的重复使用
    • 高效迭代:增删模块
    • 配合二进制化,最大化的提高项目的编译速度

    (三)组件化需要考虑的问题

    1. 需要把哪些内容划分成一个组件
    • 基础组件
      • 基本配置:常量、宏定义……
      • 分类:各种系统类的扩展
      • 网络:对AFNetworking/Alamofire、SDWebImage/Kingfisher的封装……
      • 工具:日期时间的处理、文件处理、设备信息获取……
    • 功能组件:
      • 控件:弹幕、轮播器、选项菜单、图文菜单……
      • 功能:断点下载、音频处理……
    • 业务组件:
      • 根据业务线划分:业务一、业务二……
    2. 组件间的依赖关系

    基础组件和业务组件为同一级,同一级之间最好不要产生依赖关系
    业务组件可以依赖任何基础组件和功能组件


    组件依赖
    3. 每个组件以什么样的形式存在
    • 组件内部:根据设计模式进行文件夹的划分
    • 组件形式:每个组件以pod库的形式存在
    • 组件测试:单独的测试工程
    4. 以什么样的形式集成各个组件

    以Cocoapods的形式安装各个组件

    5. 组件间的通讯
    • 披露中间API
    • 通过中间件中转
    6. 附加问题
    1. 如何提高编译速度?
    2. 如何解决重复的操作流程?
    3. 库的升级维护问题?

    (四)组件化过程中,分离各个组件的难点

    1. 如果一个组件里面依赖其他的组件该如何处理

    把组件依赖的代码直接copy到组件中
    先把组件依赖的代码做成一个pod库,然后让组件依赖pod库

    2. 如果组件内部,需要对接某个服务,该如何处理

    问题:比如图文菜单控件的封装,肯定需要用到加载网络图片。
    处理方式:使用block或delegate让外部实现


    如果有幸被你看到这里,我想先说一句:谢谢。接下来我会不断把自己空闲时间学习的笔记、工作中遇到的问题,思考总结后写成文章分享出来。下面是我的个人公众号,如果你觉得我写的东西给了你带来了一些启发,可以关注一下我的公众号bryanshen,接下来我会分享更多更优质的内容。谢谢!

    相关文章

      网友评论

          本文标题:组件化开发(一)

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