美文网首页
客户端组件化

客户端组件化

作者: Q14 | 来源:发表于2020-04-09 13:42 被阅读0次

为什么要组件化模块化

目前项目中存在的问题

  1. 组件之间依赖很严重 耦合严重 例如GMBase GMPhobos
  2. 编译慢,效率低
  3. 业务开发分工不明确,开发人员要关心非业务的代码
  4. 改代码时,可能会影响其他业务,牵一发动全身
  5. 代码结构不清晰,架构不够稳定,也不便于扩展和组件复用

优点

  1. 架构更清晰,解耦
    2.加快编译速度
    3.业务分工明确,开发人员仅专注与自己的业务,提高开发效率
    4.组件、业务独立更新版本,可回滚,持续集成
    5.客户端所有页面 支持协议跳转 支持运营 配置跳转到客户端各页面

组件的定义

组件是构成业务或者功能模块的基本单位。原则上,组件与组件之间互不依赖。

模块,module

例如,我们的社区,是一个业务,可以叫“社区模块”。它可以拆分更小的组件:搜索、签到、评论等
我们的交易金融,是一个业务,可以叫“社区模块”。它可以拆分更小的组件:搜索、签到、评论等

两者关系

从上面的阐述可以得出,一个工程,由多个模块组成,每个模块由多个组件构成。但很多时候,两者界限还是相当模糊。例如“日志组件”称为“日志模块”,也没有违和感。
组件从业务角度上不能继续拆分,可替换,可复用;
模块的定义比较笼统,可以是一个Business业务,可以是技术架构中一个业务,也可以是几个组件构成的小功能

组件化和解耦

大家不妨先思考两个问题:

为何要进行组件化开发?

各个组件之间是否一定需要解耦?

采用组件化,是为了组件能单独开发,能单独开发App就能快速集成,所以单独开发是结果。要让组件能单独开发,组件必须职责单一,对于代码中已有模块,就需要用到重构和解耦的技术,所以重构和解耦是过程。那解耦是否是必须的过程?不一定。比如UIKit,我们用这个系统组件并没有使用任何解耦手段。问题来了,UIKit苹果可以独立开发,我们使用它为什么没用解耦手段?答案很简单,UIKit没有依赖我们的代码所以不用解耦。

PS:可以不纠结组件、服务、模块、框架的概念,只关心一件事,这一部分代码能否独立开发,能就叫组件,不能我管你叫什么

我们之所以要解耦才能独立开发,通常是出现了循环依赖。这时候当然可以无脑的用路由把两个组件的耦合解开,也可以独立开发。然而,这样做只是把强引用改成了弱引用,代码还是烂代码。站在重构的角度来说,A、B组件循环依赖就是设计有问题,要么应该重构A、B让依赖单向;要么应该抽离一个共用组件C,让A、B组件都只依赖于C。
如果我们每个组件都只是单向依赖其他组件,各个组件之间也就没有必要解耦。再换个角度说,如果一个组件职责不单一,即使跟其他组件解耦了,组件依然不能很好的工作。如何解耦只是重构过程中可选手段,代码设计的原则如依赖倒置、接口隔离、里氏替换,都可以指导我们写出好的组件。
所以在组件化中重要的是让组件职责单一,职责单一的重要标志之一就是没有组件间的循环依赖

相关文章

  • React组件生命周期

    react组件生命周期一个React组件的生命周期分为实例化,存在期,销毁 实例化 组件在客户端被实例化,第一次被...

  • 客户端组件化

    为什么要组件化模块化 目前项目中存在的问题 组件之间依赖很严重 耦合严重 例如GMBase GMPhobos 编译...

  • iOS系统架构

    1: 滴滴出行iOS客户端架构演进之路 2: iOS应用架构谈 组件化方案 3:iOS组件化方案调研 4: 饿了么...

  • 前端页面渲染方式解析

    一:客户端渲染 随着前端工程化与前后端分离的发展,以及前端组件化技术的出现,如 react、vue 等,客户端渲染...

  • iOS 组件化

    豆瓣App的模块化实践 手机天猫解耦之路 蘑菇街 App 的组件化之路 京东iOS客户端组件管理实践 谈谈我的理解...

  • 用50行代码教你写出路由组件

    组件化和路由 路由的实现 客户端的使用 一些小想法 使用组件化是为了解耦处理,多个模块之间通过协议进行交互。而负责...

  • 基于 CocoaPods 的组件二进制化实践

    火掌柜 iOS 客户端经过近两年的组件化推进,组件数量已经颇具规模,达到了近 100 个。随着组件数量和代码量越来...

  • 组件化调研与实践

    what?什么是组件化? 简介 客户端(架构)yanlu的老文章[https://www.yuque.com/en...

  • 封装组件-面向对象

    tab组件化tab组件化代码 图片曝光组件化图片曝光组件化代码 轮播组件化轮播组件化代码

  • 基于 CocoaPods 的组件二进制化实践

    原文地址: 火掌柜blog 火掌柜 iOS 客户端经过近两年的组件化推进,组件数量已经颇具规模,达到了近 100 ...

网友评论

      本文标题:客户端组件化

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