美文网首页
iOS组件化概念

iOS组件化概念

作者: M_PI_4 | 来源:发表于2020-03-21 21:58 被阅读0次

组件化的概念

1. 概念

  • 将单一工程的项目,分解成多个独立的组件,然后按照某种方式,将这些组件组织成一个拥有完整逻辑的工程。

2. 产生原因

    1. 如果是单一工程,业务线比较少,人数也比较少,一般的开发模式(MVC,单纯ViewModel的MVVM [1])没有问题。
    1. 另一方面,项目慢慢发展庞大,业务主线增多,开发人员增多,就会暴露出来一些问题:

耦合严重
编译速度慢(某些大型项目Build时间>30min)
测试不独立(功能依赖关联很强)
无法使用多开发设计模式(例如MVC与MVVM)
。。。等等

[1]:带有响应式函数式编程的MVVM,在调试数据以及多人协作时可能会产生一些问题,比如:难以追踪数据紊乱位置。

3. 组件化达到的效果

  • 3.1 优势
  • 3.1.1 组件独立

独立编写
独立编译
独立运行
独立测试

  • 3.1.2 资源重用
    功能代码的重复使用

  • 3.1.3 高速迭代
    增删某块比较方便
    可配合二进制化,最大化的提高项目的编译速度 [2]
    [2]:更多组件二进制化实践点击科学浏览加速打开

4. 组件化实践考虑的问题

  • 4.1 组件划分内容归类

  • 4.1.1 基础组件

  • 基本设置:
    常量

  • 分类category
    各种系统类的扩展

  • 网络
    AFN封装
    SDWebImage封装

  • 工具
    日期处理
    文件处理
    设备信息
    。。。

  • 4.1.2 功能组件

  • 控件
    弹幕
    轮播器
    选项菜单
    图文菜单
    特殊按钮
    ...

  • 功能
    断点续传
    音频处理
    ...

  • 4.1.3 业务组件
    可根据业务线划分业务线1业务线2 ,比如"我的",“主页”等等;其中业务线还可以再细划分为“子业务线”

  • 4.2 组件存在的形式

  • 组件内部
    根据设计模式进行划分文件夹结构 (比如 MVC)

  • 组件形式
    每个组件都以 pod 库的形式存在

  • 软件测试
    单独的测试工程 (每个小组件内部都可以建立单独的测试工程进行单独测试)

  • 4.3 集成组件的形式
    通过 cocoaPods 的形式安装各个组件

  • 4.4 组件间通讯
    披露公开API
    中间件的中转

  • 4.5 附加问题

  • 如何提高编译速度

  • 如何解决重复的流程操作

  • 库的升级维护问题

Tips:

1> 业务组件可各依赖基础组件还有功能组件基础组件功能组件不可有依赖。
2> 同一层组件之间也不可有依赖(比如:功能组件内,轮播器不可依赖弹幕)。

5. 组件化过程中,分离每个组件的难点-解耦

  • 5.1 一个组件里面需要依赖其他公共功能
  • 直接copy代码 [3]
  • 把依赖组件代码搞成一个 Pod 库,然后依赖 Pod 库

[3]: 好处是迅速解决问题。在一些不中的工具方法,可以使用copy到内部来使用。

  • 5.2 一个组件里面需要对接某个服务
  • 5.2.1 例如 图文菜单的控件封装
  • 可能要用到网络请求图片。
  • 使用一个 block 或者 delegate把这部分职责抛出去。

相关文章

网友评论

      本文标题:iOS组件化概念

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