如何重构一个过万Star开源项目—BetterScroll
过去的 v1 时代 距离 BetterScroll v1 版本发布,至今已经 3 年多,由于它在移动端良好的滚动体验与性能以及多种滚动场景的支持,深受社区的青睐。用户也可以基于 BetterScroll 抽象出各种复杂的业务滚动组件,期间依托于 BetterScroll,我们还开源了基于 Vue2.0 的移动端组件库 cube-ui 。 目前 BetterScroll 的 star 数已经超过 1.1 万,GitHub 有大约 3.2 万仓库使用了它。 滴滴 内部的业务,比如 国内司乘两端 、 国外司乘两端 等核心业务都大量使用 BetterScroll,它经受住了各种业务场景的考验。 随着大量的业务场景使用以及社区的反馈与建议,v1 版本也暴露了一些问题,主要分为如下四个方面: 包体积大,无法按需引用 扩展困难,增强功能易侵入核心逻辑 测试匮乏,稳定性保证差 文档不够友好,社区答疑成本高 v2 将至 先来看下最终的整体 BetterScroll v2 版本的架构图: 从整体架构图可以看出,目前整体 BetterScroll v2 版本除了实现核心滚动外,还额外提供很多插件: picker 高仿 iOS 原生 Picker 组件 mouse-wheel 兼容 PC 鼠标滚轮场景 observe-dom 自动探测 scroll 区域 DOM 改变,并且调用 refresh 方法