也谈组件化

1、前言

组件化就是基于可重用的目的,将一个大的软件系统按照分离关注点的形式,拆分成多个独立的组件,以较少耦合、提升长远收益。

在之前我的一篇文章中,提到过关于组件化的一些概念,可以参考《GMTC移动开发者大会纪实(二)组件化只是一句口号吗》。接下来的几篇文章,主要会写下我们团队实施组件化的一些经历。

2、组件化原因

对于组件化,简单的说就是项目逐步变大过程中的必由之路。

在准备做组件化之前,随着逐步迭代现有项目结构暴露了一些问题:

  • 代码整体结构混乱、缺少层次;
  • 耦合严重,代码边界不清晰;
  • 龟速编译,开发体验极差;
  • 无法很好的支持A/BTest;

正是因为这些问题,我们才逐渐规划了组件化。当然同时需要强调的是项目架构、开发模式等都不会一直存在最优解,架构、开发模式的选择和项目所处阶段、团队规模、业务场景等息息相关,毕竟在业务刚起步打量的阶段和精细化运营阶段团队的重心是不一样的。

3、正确认识组件化

现如今网上已经有很多组件化思路、实践等文章了,但是有必要提一下的是对组件化首先需要正确认识:

  • 何时实施组件化以及组件化的具体方案等都需要结合项目所处阶段、团队规模等来决断;
  • 组件化不是炫技术,不是故弄玄虚;网上有文章讲普通的组件化实现竟然有“难点在于解决跨进程通信”,坦白的说这种就属于自己强行给自己提升B格了(忽悠到小白那真是MMP了);
    • 传统意义上的组件化和插件化是两条路:组件化发生在开发阶段、插件化发生在运行阶段;
    • 纵然二者可以结合,但是独立组件对绝大多数App难有使用场景;
    • 组件如果在运行阶段不是在自己独立的进程,那必然是拉B格无疑;
    • 说好的组件化却又去扯动态化也是拉B格无疑;

4、组件化思路

首先对于组件分为两类:技术组件和业务组件;而组件化具体的思路也一定要和自己的使用场景相结合:

  • 对于技术组件,合理封装,注意不要放在一起,避免技术组件库巨大无比;
  • 对业务组件,可选择自己依赖的技术组件够业务组件单独运行即可;
  • 对于独立组件,这种场景相对较少,一般见于一个模块需要运行于多个APP里(在自己单独的进程);

对于我们的组件化,我们首先需要的是模块之间的解耦,形式就是各个Module自己能跑起来,因而我们的思路更偏向于前两种。

5、组件化实施过程

实施过程描述起来相对简单,但是实践过程其中酸爽只有经历才会明白这是一段血泪史。具体过程在下篇讲,此处只简述;

  1. 对于技术组件需要合理封装,减少之后可能存在的替换成本;
  2. 同时注意,将技术组件分为常用和非常用,可以选择自己需要的技术组件,避免一个统一的技术组件库过大;
  3. 将业务代码根据模块进行剥离,剥离成一个个的小模块;
  4. 单独的业务模块加上必要的技术组件,支撑在开发阶段的独立运行;

6、组件化实施难点

  1. 技术组件的整理、抽离;
  2. 一定要有的DisPatcher:提供隐式的跳转和模块间方法调用能力;
  3. 组件的划分;
  4. 调试及集成方式;

原文发布于微信公众号 - 双十二技术哥(gh_b0e7544783e2)

原文发表时间:2018-02-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯云技术沙龙

简单5步,从0开始搭建你的第一款小程序

以小程序开发实战为基准点,围绕小程序云上解决方案,serverless后端架构,小游戏底层设计和直播、电商小程序的开发实战五大主题内容。

11K710
来自专栏姬小光

微信里的“授权”到底是几个意思?

作为普通用户,在使用微信的过程中,我们经常会看到各种“授权”,体验着当领导的感觉的同时,也会担心自己的隐私是否会暴露的问题。并且,即使是互联网从业者,也未必都能...

17750
来自专栏ytkah

微信公众平台增加批量获取用户基本信息接口

  为了帮助开发者提高效率,微信公众平台的用户管理接口中,新增了批量获取用户基本信息的接口。    同时,为了保障公众号第三方平台的业务运营,该接口已放入用户管...

65270
来自专栏资深Tester

测试流程之缺陷

20420
来自专栏腾讯大数据的专栏

微信小程序从使用到分析快速解析

新功能意味着更低的使用门槛——个人注册、更多的流量通道——可借助线下已有二维码与APP链接、更多的触达手段——公众号绑定。这些是不是让很多人心中蠢蠢欲动,感觉又...

34300
来自专栏FreeBuf

看我如何发现价值三千美金的Facebook视频缩略图信息泄露漏洞

本文我要分享的是我的一个$3000美金Facebook漏洞发现过程。在我决定对Facebook网站进行安全测试之后,我熟读了很多相关的漏洞发现writeup,发...

16800
来自专栏知晓程序

小程序没条件做真机测试?微信官方免费帮你测 | 小程序问答 #46

对于个人开发者而言,解决兼容性问题很麻烦,因为他们通常只会用自己的手机来测试小程序。

18030
来自专栏企鹅号快讯

微信更新到版本了,带来了哪些抢眼的功能呢?

在新年前夕,微信又放出了大招,更新了6.6.1版本,而且这次是安卓、iOS同时更新,并带来了3个新的功能: ? 新增小游戏 除了最近备受大家宠爱的“跳一跳”。在...

23290
来自专栏编程之旅

小程序开发总结

很久很久很久没有更新了,最近几个月因为房子交房,生活上是一片忙碌,工作上的事其实还好,没有分去很多精力,主要是在生活上的事情牵扯了太多了精力,于是乎把每周一更博...

31760
来自专栏web前端教室

从零开始学前端,也要注意大局观

一晃零基础web前端课程又讲一周了。 这一周我们都做了些什么呢?一是把json的编辑和获取都过了,然后是使用json来生成dom并绑定相应事件然后添加到页面中。...

21480

扫码关注云+社区

领取腾讯云代金券